자바는 객체 지향 언어지만, 완전한 객체 지향 언어는 아니다.
따라서, 8개의 기본형은 객체로 다뤄지지 않는다.
그러나 이 8개의 기본형 마저 객체로 다루고 싶을 경우에 사용하는 것이 wrapper 클래스다.
“기본형 변수를 클래스로 한번 랩핑(감싸는) 변수”
문자열 → 기본형으로 변환할 경우
byte b = Byte.parseByte("100");
short s = Short.parseShort("100");
int i = Integer.parseInt("100");
long l = Long.parseLong("100");
float b = Float.parseFloat("3.14");
double b = Double.parseDouble("3.14");
문자열 → 래퍼 클래스로 변환할 경우
Byte b = Byte.valueOf("100");
Short s = Short.valueOf("100");
Integer i = Integer.valueOf("100");
Long l = Long.valueOf("100");
Float b = Float.valueOf("3.14");
Double b = Double.valueOf("3.14");
// 컴파일 전
int i = 5;
Integer num = new Integer(7);
int sum = i + num; // 기본형 i + 참조형 num
// 컴파일 후
int i = 5;
Integer num = new Integer(7);
int sum = i + num.intValue(); // 참조형 → 기본형 으로 변환해주는 intValue() 메서드가 자동으로 붙게 된다
'기본형 + 참조형' 계산이 가능하다
컴파일 되면서, 기본형 값과 래퍼 클래스의 객체 간에 자동 변환이 되기 때문
오토박싱 (autoboxing)
언박싱 (unboxing)
// 박싱
int number = 21;
Integer num = number; // Integer 래퍼 클래스 num 에 21 의 값을 저장
// Integer num = new Integet(number); new Interger 는 지금은 안 쓰는 방식. (위의 방식으로 사용하기)
// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공