본문 바로가기

BackEnd129

[Java] 랩퍼클래스 Wrapper Class 랩퍼클래스 Wrapper Class 자료형은 기본형(Primitive, P타입)과 참조형(Reference, R타입)으로 나뉘는데, 컬렉션에 값을 담을 때 참조형(R)만 담을 수 있고 기본 자료형(P)은 담을 수 없기 때문에 P타입 자료형을 R타입 자료형으로 만들어 줄 때 랩퍼 클래스를 사용한다. 기본 자료형의 값을 멤버 변수의 값으로 저장하고, 이 값 주위로 값을 가공하는 메소드들이 감싸고 있다고 해서 랩퍼(Wrapper) 클래스라고 불린다. 다음과 같이 모든 기본 자료형에 대해 그에 대응하는 랩퍼 클래스가 있다. 기본 자료형 랩퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean.. 2021. 7. 13.
[Java] 메모리 Memory 메모리 Memory 1. 메소드 영역 - 클래스 데이터 (클래스 변수) 프로그램 실행 중 어떤 클래스가 사용되면 JVM은 해당 클래스 파일을 읽어서 클래스 데이터를 이곳에 저장하고, 동시에 클래스 변수도 이곳에 생성한다. 2. 호출 스택 - 메인 메소드(지역 변수) 메소드 작업에 필요한 메모리 공간을 제공한다. 메소드가 호출되면 호출스택에 메소드 활용을 위한 메모리가 할당된다. 메모리에서 메소드가 작업을 하는 동안, 지역변수와 연산의 중간 결과가 저장된다. 메소드가 작업을 마치면 할당된 메모리 공간은 반환되어 비워진다. 호출스택의 제일 상위에 있는 메소드가 지금 실행중인 메소드이다. 아래에 있는 메소드가 바로 위에 있는 메소드를 호출해서 사용중인 메소드이다. 나머지는? 나머지는 모두 대기한다. 3. 힙 .. 2021. 7. 13.
[Java] 열거 타입 Enum 열거 타입 Enum Enum은 String처럼 클래스처럼 보이는, 자료형이다. 보통 서로 관련 있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의하는 용도로 쓴다. 다음과 같이 자료형 키워드 위치에 'Enum'을 적어 선언한다. public Enum 클래스이름{ ... } Season에는 Spring, Summer, Fall, Winter 라는 상수가 있다. package enumtest; public enum Season { Spring, Summer, Fall, Winter } 이 Season 열거타입을 이용하여 다음과 같이 활용할 수 있다. String 처럼 "Spring"과 같이 바로 대입하면 안되고, Season.Spring 과 같이 표현하여야 한다. package enumtest; public .. 2021. 7. 13.
[Java] 다형성 Polymorphism 다형성 Polymorphism 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 다형성을 위해 자바는 부모 클래스로 타입 변환을 허용해준다. 즉 부모타입에 모든 자식객체가 대입될 수 있다. 이를 이용하여 객체를 부품화할 수 있다. 단, 다형성은 동적 바인딩(런타임 때 최종 타입이 결정되는 것)이 지원되어야 한다. EX01. 어벤져스 Hero 클래스를 상속받은 Ironman, Hulk, Spiderman, Thor클래스가 각각의 위치(하늘, 땅, 바다, 우주)를 담은 변수를 갖고, 각기 다른 공격방식(Javis, 주먹, 거미줄, 번개)을 갖도록 하였다. package poly.. 2021. 7. 13.
[Java] 추상 Abstract 추상 Abstract 클래스 만드는 목적은 인스턴스 생성하기 위해서인데, 추상클래스는 미완성 된 클래스이기 때문에 인스턴스를 생성할 수 없다. 그럼 추상클래스는 왜 존재하는 것일까? 자바에서는 추상화라는 개념을 구현할 수 있다. 일단 추상이라는 의미부터 살펴보자면, 추상이라는 것은 현실화 되어질 필요가 없는 클래스를 말한다. 따라서 인스턴스화 할 필요는 없지만, 상속개념에서 중요한 위치를가지는 클래스를 보통 추상클래스로 선언하여 사용한다. 추상 클래스 선언 규칙 1. 클래스의 정의된 메소드 중 추상 메소드가 하나라도 있다면 해당 클래스는 무조건 추상 클래스가 된다. 2. 만약 추상 메소드가 하나도 없을 때 클래스를 추상화 하고 싶다면 abstract 키워드를 붙여서 추상화 시킬 수 있다. 3. 추상 클래.. 2021. 7. 13.
[Java] 상속과 인터페이스 인터페이스 다른 언어에서 찾기 힘든 자바의 고급 기능으로, 단일 상속의 한계를 극복할 수 있다. 인터페이스는 다중상속과 비슷한 기능을 제공하며, 외부를 서로 이어주는 통로 역할을 한다. 인터페이스 생성하기 interface 인터페이스명{ public abstract void();//추상 메소드 } 인터페이스 사용하기 class 클래스명 implements 인터페이스명{ 인터페이스에서 미구현 된 메소드 오버라이드; } 인터페이스 구현 시 주의점 인터페이스 내에 존재하는 메소드는 무조건 public abstract로 선언해야 한다. 인터페이스 내에 존재하는 변수는 무조건 public static final로 선언해야 한다. 인터페이스 상속 시 주의점 클래스에 인터페이스 상속시 인터페이스 내에 정의된 모든 추.. 2021. 7. 13.
[Web] 표 만들기 table head 표의 제목, 기본값: 굵은 글씨, 중앙 정렬 table row 가로줄, 기본값: 보통 글씨, 왼쪽 정렬 table data 셀 만들기, 기본값: 보통 글씨, 왼쪽 정렬 리스트 번호 제목 글쓴이 조회수 날짜 4 4번 글 입니다. user 5 2021-06-07 3 3번 글 입니다. user 5 2021-06-07 2 2번 글 입니다. user 5 2021-06-07 1 1번 글 입니다. user 5 2021-06-07 2021. 7. 12.
[Java] 자바 API 읽기 String에 대해서 공부하다가 이해가 되지 않는 부분이 많아 결국 자바 API까지 흘러들어가게 되었다. 기본 UI가 글자가 작고 줄간격이 매우 좁기 때문에 어려워 보이지만, 복잡해 보이는 UI에 비해 생각보다 구조가 단순하고 설명도 꽤 친절하게 되어있는 편이다. 구조만 알아도 지레 겁먹지 않고 원하는 내용만 읽어볼 수 있을 것 같아 정리해보았다. https://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com ▲ 자바 API 사이트 링크 영역별 나타내는 항목은 위와 같이 ① 패키지 목록 ② 클래스 목록 ③ 패키지 목록 + 설명 으로 구성되어 있는데, 패키지의 설명을 굳이 읽을 필요는 없어 보이므로 패키지 이름을 알면 1번 영역에.. 2021. 7. 9.
[Java] String Builder / String Buffer StringBuilder / StringBuffer String은 소위 불변 객체라고 한다. 2개의 String 객체가 있을 때, 두 객체를 더하는 연산을 하면 새로운 String을 생성한다. 즉 더하는 행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능이 낮아지는 결과로 이어질 수 있다. StringBuilder/StringBuffer는 String끼리 더할 때 새로운 객체를 생성하는 것이 아니라, 기존의 데이터에 더하는 방식을 사용하므로 속도가 빠르고 상대적으로 부하가 적다. 따라서 긴 문자열을 더하는 상황이 발생할 경우 StringBuilder를 적극적으로 사용하는 것이 좋다. StringBuilder는 클래스 안에 배열 공간을 미리 만들어놓고 문자열을 추가하는 함수가 호출.. 2021. 7. 9.
[Java] 생성자 Constructor 생성자 Constructor 객체를 생성할 때 사용하는 실제 객체를 생성해주는 코드이다. 즉 생성자 없이는 개체를 만들 수 없다. 생성자는 메소드와 유사한 형식을 가지고 있지만, OOO( ) 메소드와는 기능적인 부분에서 차이가 있다. 1. 생성자의 형식 생성자의 이름은 반드시 클래스 이름과 같아야 한다. 메소드가 아니기 때문에 리턴타입(반환타입)을 선언할 수 없다. 2. 기본 생성자 Default Constructor 파라미터가 없는 생성자를 기본 생성자라고 한다. 기본 생성자를 이용해서 생성된 객체는 기본 객체라고 하며, 모든 필드 값은 기본 값으로 초기화 된다. 클래스에 생성자를 따로 정의해주지 않으면 자바에서 기본 생성자를 자동으로 만들어준다. 즉, 클래스에 생성자가 하나라도 있다면 기본 생성자가 .. 2021. 7. 9.
[Java] 텍스트 형식 Text Format 텍스트 형식 Text Format 문자열에 변수의 값을 함께 출력하는 방법은 여러가지가 있다. 상황에 따라 텍스트 형식을 사용하면 더욱 간편하게 출력할 수 있다. 아래의 세 방법은 모두 같은 결과 "이름 : 홍길동 아이디 : hong5000 tel : 010-5569-8102" 를 출력한다. 방법01. 가장 기초적인 방법은 다음과 같은 방법이다. (텍스트 형식 사용 X) public class TextFormat01 { public static void main(String[] args) { String name = "홍길동"; String id = "hong5000"; String tel = "010-5569-8102"; System.out.println("이름 : " + name + " ,아이디 : .. 2021. 7. 8.
[Java] 배열 복사 (깊은 복사 vs 얕은 복사) 배열 복사 배열 복사에는 얕은 복사, 깊은 복사 두 가지가 있다. 얕은 복사 주소값이 복사된 배열이기 때문에, 원본 배열이 변경되면 복사된 배열 또한 변경된다. package may31; import java.util.Arrays; public class ArrayCopy01 { public static void main(String[] args) { int[] arr01 = {10, 20, 30}; int[] arr02 = new int[3]; arr02 = arr01; //arr01만 수정해도, arr02의 값도 수정된다. //arr01의 0번째 원소의 값 바꾸기 arr01[0] = 100; System.out.println(Arrays.toString(arr01)); //[100, 20, 30] S.. 2021. 7. 6.