Wrapper 클래스
1 2 3 4 5 6 7 8 9 10 11 12 | public static void main(String[] args) { int i = 10; Integer intg = i; //Integer intg = new Integer(i); //기본형을 참조형으로 형변환(형변환 생략가능) Object obj = i; //Object obj = new Integer(i); |
*wrapper 클래스
Boolean Character Byte Short Integer Long Float Double
:
: 기본형 데이터를 객체로 바꿔주는 클래스
자바 버전 1.5때부터 들어온 'autoboxing' 때문에 가능하다.
보이는것으로는 Integer intg(참조형) = i(기본형);
기본형을 참조형에 넣는것같지만, 실제로 컴파일할땐
new가 실행되어 형변환을 시켜주는 것을 'autoboxing' , 'boxing' 이라 한다.
*autoboxing
자동으로 캐스팅되는것처럼 보이게 코드를 짤 수 있음.
------------------------------------------------------------------------------------
1 2 3 | Integer intg2 = new Integer(20); //Long l2 = intg2; // Long l2 = new Integer(20); (X) //long l3 = intg2; // long l3 = intg2.intValue(); (O) | cs |
그럼 기본형에서 캐스팅한것처럼 ex) long a = (long)int b;
wrapper클래스도 캐스팅할수있는가 하면 그렇지 않다.
wrapper클래스는 기본적으로 new생성자로 데이터 값을 넣는것이고
wrapper 클래스 간의 캐스팅(형변환)은 허용되지 않는다.
단, 기본형데이터 = wrapper클래스 ex)long l3 = intg2;
간에는 기본형데이터 캐스팅이 허용되는선에서 가능하다.
그냥 되는것은 아니고 기본형데이터로 넣는건 intg2값이 intg2.intValue()를 불러 자동으로바꿔준다.
이것을 'unboxing' 이라고 부른다
- Boxing : 기본 자료형을 Wrapper 클래스의 객체로 변경하는 과정
ex) Integer age = new Integer(30);
- Unboxing : 각각의 객체를 기본 자료형으로 변경하여 사용하는 과정
ex) int age2 = age.intValue();