■ Java Autoboxing vs Unboxing



안녕하세요. 제임스 입니다. 


자바 개발중 별로 중요하게 생각지 못하거나 왜 그런지 모르고 개발 하는 것들 중 한가지가 Wrapper Classes 와 primitive data type 사이에 이루어 지고 있는 자동 변환 기능을 Autoboxing 과 Unboxing 이라 부르고 있습니다. 


이번에는 이 Autoboxing 과 Unboxing 에 대해 정리해보겠습니다. 



Autoboxing은 자바 컴파일러가 primitive data type 을 그에 상응하는 wrapper class 로 자동 변환 시켜 주는 것을 의미 합니다. 예를 들면 int 를 Integer 로, double 을 Double 로 변환 시키는 것들을 의미 합니다. 


1
2
3
4
5
6
7
8
public static void main(String[] args) {
     char ch = 'j';
     autoBoxing(ch);
}
    
public static void autoBoxing(Character chr){
    System.out.println("autoboxing test result : chr = ["+chr+"]");
}
cs


autoBoxing 함수의 인자 값은 Character 형을 받는 것으로 정의 되어 있지만 실제로 입력한 값은 char 형입니다. 입력 된 primitive data type 인 char 를 Java compiler 가 자동으로 wrapper class 인 Character 형으로 변환 시켜 줬습니다. 


실행 결과는 아래와 같습니다. 


autoboxing test result : chr = [j]



1
2
3
4
5
6
7
8
public static void main(String[] args) {
    int i = 7;
    autoBoxing(i);
}
    
public static void autoBoxing(Integer I){
    System.out.println("autoboxing test result : Integer I = ["+I+"]");
}
cs


위 코드는 int 를 Integer 로 변환 시키는 예제 입니다. 


실행 결과는 아래와 같습니다. 


autoboxing test result : Integer I = [7]




Unboxing은 자바 컴파일러가 wrapper class 를 primitive data type 으로 자동 변환 시켜 주는 것을 말합니다. 


1
2
3
4
5
6
7
8
public static void main(String[] args) {
    Character chr = new Character('c');
    unBoxing(chr);
}
    
public static void unBoxing(char ch){
    System.out.println("unboxing test result : chr = ["+ch+"]");
}
cs


unBoxing 함수의 인자 값은 char 형으로 정의 되어 있지만 실제 함수 호출 시 입력된 값은 wrapper class 인 Character 입니다. java compiler 가 wrapper class 인 Character 를 primitive data type 인 char 형으로 변환 시킨 것입니다. 


실행 결과는 아래와 같습니다. 


unboxing test result : ch = [c]



1
2
3
4
5
6
7
8
public static void main(String[] args) {
    Integer i = new Integer(2);
    unBoxing(i);
}
    
public static void unBoxing(int i){
    System.out.println("unboxing test result : int i = ["+i+"]");
}
cs


위 코드는 Integer 를 int 로 변환 시키는 예제 입니다. 


실행 결과는 ...


unboxing test result : i = [2]




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,