Wrapper 클래스는 int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 JDK에 만들어진 클래스들을 통칭하는 것으로, Wrapper인 클래스가 존재하는 것은 아니다.
Integer i = Integer.valueOf(10);
Character c = Character.valueOf('c');
Double d = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);
JDK 9 부터는 생성자를 이용한 객체 생성을 폐기하였기 때문에 위와 같이 정적 메서드를 사용하여 초기화 해주면 된다. Wrapper 클래스 대부분의 메서드는 static 메서드이다.
int ii = i.intValue(); // 10
double dd = d.doubleValue(); // dd = 3.14
boolean bb = b.booleanValue(); // bb = true
int i = Integer.parseInt("123");
boolean b = Boolean.parseBoolean("true");
double d = Double.parseDouble("3.14");
String s1 = Integer.toString(123); // s1 = "123"
String s2 = Boolean.toString(true); // s2 = "true"
기본 타입의 값을 Wrapper 객체로 변환하는 것을 박싱(boxing)이라고 하고, 반대의 경우를 언박싱(unboxing)이라고 한다.
박싱과 언박싱은 자동으로 이뤄지며, 이를 자동 박싱(auto boxing), 자동 언박싱(auto unboxing)이라고 부른다.
Integer ten = 10;
int n = ten;
기본 타입만으로도 충분히 표현 가능한데 Wrapper 클래스가 필요한 이유가 뭘까?
그 이유는 JDK의 어떤 클래스들은 객체만을 다루기 때문에 기본 타입의 데이터는 사용할 수 없기 때문이다. 이 때 Wrapper 클래스를 통해 기본 타입의 값을 객체로 만들어 사용한다.
정리하자면 다음과 같다.
출처
명품 JAVA programming - 황기태, 김효수
https://www.youtube.com/사람만이
https://medium.com/@s23051/래퍼-클래스란-wrapper-class-cc5aa6f7cdd1