코드스테이츠_국비교육/[Section1]

16.01_Wrapper 클래스_22.09.13

생각없이 해도 생각보다 좋다. 2022. 9. 13. 21:30

학습키워드

  • 제네릭
  • 제네릭 클래스
  • 제네릭 메서드
  • Wrapper 클래스

Wrapper 클래스

>의미

: 기본 자료형으로 할당된 데이터 값을 객체화 시키기 위한 용도의 클래스

: 인스턴스로 감싼다고 표현

>사용 목적 및 특징

: 인스턴스의 참조 값을 매개 변수로 하는 클래스에 기본 자료형을 인자로 전달할 수 있음.

: 생성자를 통해 값을 한 번 주면 값을 바꿀 수 없는 immutable 인스턴스이다.

: 값을 바꾸기 위해서는 Boxing, Unboxing이라는 절차를 거쳐야한다. (private상황의 getter, setter 느낌이랑 좀 비슷)

>Wrapper 클래스의 종류

: 각각의 기본 자료형의 풀네임이 곧 Wrapper 클래스들 이다.

: Integer, Double, Boolean, Character, Byte, Short, Long, Float

>코드 예시

int num = 3;
Integer wrapNum = new Integer(num);
//Integer라는 Wrapper 클래스로 num(=3)을 감쌈.

>Boxing, Unboxing

  • Boxing, 박싱

: Wrapper 클래스로 값을 감싸는 것을 의미함.

: 객체 생성

  • Unboxing, 언박싱

: Wrapper 클래스로 감쌌던 값을 다시 기본 자료형으로 꺼내는 것을 의미함.

: Wrapper 클래스의 메소드 이용.

: .intValue(), .doubleValue 등이 있음. (type+Value 꼴의 형태)

>오토 박싱, 오토 언박싱

: 박싱과 언박싱을 컴파일러가 자동으로 해결해줌

//예시
Integer num = 10; //가능. 오토 박싱
//Integer num = new Integer(10); 박싱
num += 3; //가능, 오토 언박싱+오토 박싱
//num = new Integer(num.intValue() + 3); 언박싱 후 박싱


Number 클래스

: Wrapper 클래스의 상위 클래스로, 추상 클래스이다.

: intValue(), doubleValue()와 같은 추상 메소드로 정의되어있다. (Wrapper 클래스의 언박싱 메서드)

: Wrapper 클래스는 Number 클래스를 상속받기 때문에 사실 모든 언박싱 메서드들이 구현되어 있다. 즉, 필요에 따라서

는 다른 기본 자료형 값으로 언박싱도 가능하다!