래퍼 클래스 (Wrapper Class)
- 원시 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들
- 기본타입을 객체 형태로 '포장'하는 것을 의미한다. (포장 객체)
- 래퍼 클래스는 모두
java.lang 패키지에 포함되어 제공된다.
- 별다른 패키지 불러오기 없이 곧바로 소스 단에서 사용이 가능하다.
Integer num1 = new Integer(5); // 기본형 타입 정수를 래퍼 클래스로 감싸 객체화
Integer num1 = 5; // 이런식으로도 표현 가능
Double num2 = new Double(1.11); // 기본형 타입 실수를 래퍼 클래스로 감싸 객체화
Double num2 = 1.11;
원시 타입(Primitive Type)
- 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입
boolean, char, byte, int 등
참조타입(Reference Type)
- 원시 타입을 제외한 모든 타입들(문자열, 배열, 열거, 클래스, 인터페이스)
- Java에서 실제 객체는 힙 영역에 저장되며, 참조 타입 변수는 스택 영역에 실제 객체들의 주소를 저장하여, 객체를 사용할때 마다 참조 변수에 저장된 객체의 주소를 불러와 사용하는 방식이다.
원시 타입과 참조 타입 차이
- Null 포함 가능 여부
- 원시타입은
null을 담을 수 없지만, 참조 타입은 가능하다.
- 제너릭 타입에서 사용 가능 여부
- 원시타입은 제너릭 타입에서 사용할 수 없지만, 참조 타입은 가능하다.
// 불가능
int i = null;
List<i> list;
// 가능
Integer integer = null;
List<Integer> list;
Boxing(박싱) vs Unboxing(언박싱)
- Boxing: 기본 타입에서 wrapper 클래스로 전환
- Unboxing: wrapper 클래스 객체를 기본 타입으로 전환
Integer wrapper = new Integer(2); // boxing
int primitive = wrapper.intValue(); // unboxing
자동 박싱(AutoBoxing) & 자동 언박싱(AutoUnBoxing)
- JDK 1.5 부터는 박싱과 언박싱이 필요한 상황에 자바 컴파일러가 자동으로 처리해주기 시작했다.
출처
자바 Wrapper 클래스와 Boxing & UnBoxing 총정리
[Java] Wrapper Class(래퍼 클래스)
원시타입, 참조타입(Primitive Type, Reference Type)