Java 래퍼 - 박싱, 언박싱
박싱은 기본형을 래퍼 클래스로 변경하는 것이다. 마치 박스에 물건을 넣는다는 표현으로 박싱(Boxing)
래퍼 클래스 박싱 특징
- new Integer(...) 직접 사용 못하도록 제거 예정
- new Integer(...) 대체로 Integer.valueOf(...) 사용
- 내부에서 new Integer(...) 반환한다.
- Integer.valueOf(...) 성능 최적화 있음. 내부 정적 Pool 에서 값을 꺼내 사용한다.
- Integer 에서는 -128 ~ 127 캐싱 사용하듯이 이미 있는 데이터를 사용.
- 해당 범위의 값 없는 경우 new Integer(...) 호출
- 이는 마치 문자열 Pool 처럼 자주 사용하는 숫자는 미리 생성하고 재사용한다.
- 이러한 방식은 더 나은 최적화로 변경 가능
래퍼 클래스 언박싱 특징
- 래퍼 클래스에 있는 기본형 타입으로 반환하는 메소드가 있음
- 박스에 있는 물건을 꺼내는 것으로 언박싱(Unboxing) 이라 한다.
그외 - 비교에는 equals()
- 래퍼 클래스는 객체로 == 사용시 동등성으로 인해 인스턴스 참조값이 비교됨
- 래퍼 클래스는 내부 값을 비교하도록 동일성의 equals() 재정의 되어있음.