✔️ Wrapper class (오토 박싱 & 언박싱)
Wrapper 클래스란?
- 기본 자료형에 대한 클래스 표현을 Wapper 클래스라고 함
- 산술 연산을 위한 클래스가 아니기 때문에 불변하므로 값에 대한 변경이 불가능하고 새로운 객체의 할당이나 참조만 가능함
- 객체로 저장해야 하는 경우
- 매개변수로 객체가 요구될 경우
- 객체 간의 비교가 필요할 경우
- 제네릭이나 컬렉션에서 사용하는 경우
- null 값을 반환해야만 하는 경우
- 하지만 위와 같은 상황을 제외하고 일반적인 상황에서는 Wrapper 클래스를 사용해야 하는 이유가 없음
- 자바에는 기본 타입과 Wrapper 클래스가 존재함
- 기본 타입 : byte, short, int, long, float, double, char, boolean
- Wrapper 클래스 : Byte, Short, Integer, Long, Float, Double, Character, Boolean
- 기본 타입과 Wrapper 클래스 사이에서는 박싱과 언박싱이 일어나게 됨
- 박싱 : 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 동작
- 언박싱 : Wrapper 클래스에서 기본 타입으로 변환하는 동작
// 박싱
int i = 10;
Integer num = new Integer(i);
// 언박싱
Integer num = new Integer(10);
int i = num.intValue();
오토 박싱과 오토 언박싱
- JDK 1.5부터는 자바 컴파일러가 박싱과 언박싱이 필요한 상황에 자동으로 처리를 해줌
- 하지만 내부적으로 추가 연산 작업을 거치게 되어 실행 시간이 늘어나 성능의 차이가 발생하므로
오토 박싱과 오토 언박싱이 일어나지 않도록 동일한 타입 연산이 이루어지도록 구현하는 것을 권장
// 오토 박싱
int i = 10;
Integer num = i; // new 키워드가 사라짐
// 오토 언박싱
Integer num = new Integer(10);
int i = num; // intValue() 메소드가 사라짐