Wrapper 클래스 : 기본 자료형(primitive type)의 데이터를 감싸는 클래스
* 기본 자료형 : boolean, char, byte, short, int, long, float, double
* Wrapper : Boolean, Character, Byte, Short, Integer, Long, Float, Double
* Wrapper 클래스는 String과 마찬가지로 immutable하다.
* Wrapper 클래스의 static 메소드 valueOf(primitive type or String) : 입력받은 인자 값을 지정된 객체형으로 변환하여 반환한다.
ex) Integer num1 = Integer.valueOf(100);
Double num2 = Double.valueOf(100);
Integer num3 = Integer.valueOf("100", 16); → 문자열 100을 16진수로 변환하여 Interger형으로 변환
Wrapper 클래스의 auto-boxing / unboxing
* boxing(포장) : 기본자료형의 값을 Wrapper 클래스에 저장
* unboxing(개봉) : Wrapper 클래스에 저장된 기본자료형 값을 꺼냄
ex) Integer num1 = 10; → auto-boxing, Integer.valueOf(10) 동작
int n1 = num1; → auto-unboxing, num1.intValue() 동작
* BigInteger : 정수타입 기본자료형으로 담을 수 없는 한계 범위 밖에 값들을 다룰 때 사용하는 객체
* BigDecimal : 실수타입 기본자료형에서 발생하는 정밀도(오차)의 문제를 극복하기 위해 사용하는 객체
Wrapper 클래스의 유용성
1. Object 타입이 모든 타입(primitive 타입 포함)도 받을 수 있다.
2. Collection과 같은 Generic 클래스에선 primitive타입을 담을 수 없다. 하지만 Wrapper를 통해 가능하다.