Wrapper 클래스 왜 궁금했을까❓
- Optional 클래스에 대해서 공부하는 과정에서 Wrapper 클래스의 개념이 나왔는데 몰랐던 개념이어서 공부하고 정리 해보려고 한다.
Wrapper 클래스
- Java의 자료형은 기본 타입(primitive type)과 참조 타입(reference type)으로 나뉘는데 기본 타입을 객체로 다루기 위해서 사용하는 클래스를 Wrapper 클래스라고 지칭한다.
- 기본 타입만 Wapper 클래스를 적용하는 이유는 boxing, unboxing 등 과정에서 발생하는 오버헤드때문에 성능 저하가 일어날 수 있기 때문이다.
Wrapper 클래스의 종류
기본 타입(Primitive) |
Wrapper 클래스 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
박싱(Boxing)과 언박싱(UnBoxing)
- 박싱(Boxing)은 기본 타입의 데이터를 Wrapper 클래스의 인스턴스로 변환하는 과정
- 언박싱(UnBoxing)은 Wrapper 클래스의 인스턴트에 저장된 값을 기본 타입의 데이터로 변환하는 과정
// 박싱(Boxing)
// Integer Wrapper 클래스에 176을 대입
Integer height = new Integer(176);
// 언박싱(UnBoxing)
// Integer Wrapper 클래스에서 값을 추출
int tempHeight = height.intValue();
JDK 1.5부터는 박싱(Boxing)과 언박싱(UnBoxing)을 Compiler가 자동으로 처리해주어 오토 박싱(AutoBoxing) 오토언박싱(AutoUnBoxing)이라고 한다.