Wrapper 클래스는 기본형을 객체로 표현할 때 사용되는 클래스들의 통칭이다.
다음 표를 보자.

클래스명인 만큼 첫글자만 대문자로 바뀔 뿐 대부분이 기본 자료형과 같은 이름을 가진다. 눈에 띄게 달라지는 것은 int → Integer와 char → Character이다.

클래스 이름처럼 기본형 타입의 데이터를 감싸는 역할을 한다고 생각하면 이해하기 쉽다.
package kr.s29.lang.wrapper;
public class WrapperMain01 {
public static void main(String[] args) {
boolean b = true;//기본 자료형 데이터
Boolean wrap_b = new Boolean(b);
boolean b2 = wrap_b.booleanValue();
System.out.println(b2);
System.out.println("==================");
//Character 객체 생성
Character wrap_c = 'A';
System.out.println(wrap_c);
}
}
Wrapper 클래스에서 이해하고 있어야 하는 가장 중요한 개념은 boxing과 unboxing이다.
boxing : 기본 자료형 → 참조 자료형 변환
ex. Boolean wrap_b = new Boolean(b);
unboxing : 메서드를 통해 참조 자료형 → 기본 자료형 변환
ex. boolean b2 = wrap_b.booleanValue();
단, 참조 자료형의 생성자를 활용해 boxing하는 방법 사용 시 이클립스 상에서 아래와 같이 밑줄이 그어지는 것을 확인할 수 있다.

이는 'Deprecated'로, 과거의 문법이니 사용을 추천하지 않는다는 뜻이다. 비추천이기에 아직까지 사용은 가능하지만, 언제 사용이 불가하게 될지 모르기 때문에 사실상 '사용 금지'라고 보는 것이 맞다.
최근 방식은 생성자를 사용하지 않고 바로 대입하는 auto boxing과 auto unboxing이다.
auto boxing : 래퍼 객체를 써야 할 자리에 기본 자료형의 값을 썼을 때 일어나는 래퍼 객체로의 자동 변환
ex. Character wrap_c = 'A';
auto unboxing : 기본 자료형의 값을 써야 할 자리에 래퍼 객체를 썼을 때 일어나는 기본형으로의 자동 변환
ex. System.out.println(wrap_c); : 참조 자료형인 Character 출력 시 객체의 참조값이 아닌 기본 자료형 값이 출력된다.
출력)
true
==================
A
한 가지 예제를 더 확인해보자.
package kr.s29.lang.wrapper;
public class WrapperMain02 {
public static void main(String[] args) {
Integer obj1 = 10;
Integer obj2 = 20;
Integer result = obj1 + obj2;
System.out.println(result);
System.out.println("================");
int result2 = obj1 + obj2;
System.out.println(result2);
}
}
(auto boxing) 참조 자료형인 Integer 객체에 기본값을 바로 대입하였다.
ex. Integer obj1 = 10;
이렇게 참조변수에 저장된 값끼리 더해서 새로운 참조변수에 대입해줄 수 있고
ex. Integer result = obj1 + obj2;
바로 출력도 가능하며
ex. System.out.println(result);
(auto unboxing) 그리고 객체 형태의 참조변수끼리 더해 기본 자료형 변수에 대입해줄 수도 있다.
ex. int result2 = obj1 + obj2;
출력 결과는 다음과 같다.
출력)
30
================
30