Wrapper 클래스는 자바의 기본 데이터 타입을 객체로 다루기 위해 제공되는 클래스입니다. 기본 데이터 타입은 int, char, boolean등이 있고, 이러한 데이터 타입을 객체로 다루어야 할 때 Wrapper 클래스를 사용합니다.
기본 타입 : int, long, float, double, boolean 등
Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등
오토박싱은 기본 데이터 타입의 값을 해당하는 Wrapper 클래스 객체로 자동 변환하는 것을 말합니다. 이는 컴파일러가 자동으로 처리해주므로 개발자가 명시적인 변환을 직접 작성하지 않아도 됩니다.
int num = 10;
Integer integerObj = num; // 오토박싱
언박싱은 Wrapper 클래스 객체를 해당하는 기본 데이터 타입의 값으로 자동 변환하는 것을 말합니다. 마찬가지로 컴파일러가 자동으로 처리해주므로 명시적인 변환을 작성하지 않아도 됩니다.
Integer integerObj = 20;
int num1 = integerObj; // 언박싱
int num2 = integerObj.intValue();
JDK 1.5부터는 자바 컴파일러가 박싱과 언박싱이 필요한 상황에 자동으로 처리를 해줍니다.
편의성을 위해 오토 박싱과 언박싱이 제공되고 있지만, 내부적으로 추가 연산 작업이 거치게 됩니다. 따라서, 오토 박싱&언박싱이 일어나지 않도록 동일한 타입 연산이 이루어지도록 구현해야합니다.
실제로 100만건 기준으로 약 5배의 성능 차이가 납니다. 따라서 서비스를 개발하면서 불필요한 오토 박싱(캐스팅)이 일어나는 지 확인하는 습관을 가져야합니다.
피드백 및 개선점은 댓글을 통해 알려주세요😊