카테고리 없음

Wrapper 클래스

설총이 2018. 5. 31. 17:43

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);       

cs



*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();