2014년 9월 8일 월요일

Boxing, UnBoxing, promotion, casting

boxing : 기본형 타입의 데이터를 참조형 타입으로 바꿔주는 것.
unboxing : boxing의 반대개념.

promotion : 작은 값을 큰 그릇에 대입하는 경우, 묵시적으로 형변환이 발생. 이를 promotion이라 한다.
casting : 큰 값을 작은 그릇에 대입하는 경우, 강제적으로 형변환 명시하여 사용한다. 데이터유실이 발생할 수 있다. (*참고로 boolean자료형은 형변환을 할 수 없다.)
promotion/casting관련 참조



method의 argument에서는 기본타입의 promotion이 일어나지 않는다.

 public static void go(short n){System.out.println("short");}
 public static void go(Short n){System.out.println("Short");}
 public static void go(Long n){System.out.println("Long");}
 
 public static void main(String[] args) {
  Short y=6;
  int z=7;
  long l=z;
  go(y);
  go(z);  //compile error. method의 argument에서는 기본타입의 promotion이 일어나지 않는다.
  go((long)z); //강제 casting을 통해 boxing이 발생하고 정상출력된다.
 }

댓글 없음 :

댓글 쓰기