자바의 자료형은 기본타입(primitive type)과 참조 타입(reference type)으로 나눠집니다. 기본 타입으로는 char, int, boolean 등이 있고 참조타입은 String, class 등이 있습니다. 프로그래밍을 할때, 기본 타입의 데이터를 객체로 취급해야하는 경우가 있습니다. 예를 들어, 메서드 인자를 객체 타입으로 받는경우
이럴 때 기본 타입을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스라고 합니다.
기본타입은 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장객체라고 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다. 래퍼 클래스로 감싸고 있는 기본 타입값은 외부에서 변경이 불가능합니다.
기본 타입의 값을 포장 객체로 만드는 과정을 박싱, 반대로 포장객체에서 기본 타입의 값을 얻어내는 과정을 언박싱이라고 한다.
Integer num = new Integer(17); // 박싱
int n = num.intValue(); //언박싱
System.out.println(n);
클래스 타입에 기본값이 대입될 경우 자동 박싱 됨
Integer num = 17; // 자동 박싱
int n = num; //자동 언박싱
System.out.println(n);
래퍼 클래스를 비교할때는 ==을 사용하면 안되고, equals 메서드를 사용햐야 한다.
래퍼 클래스와 기본 자료형을 비교할때는 모두 사용 가능하다, 컴파일러가 자동으로 오토박싱과 언박싱을 해주기 때문이다.
https://coding-factory.tistory.com/547
https://backtony.github.io/interview/2021-12-06-interview-16/#wrapper-class