기본type 을 객체로 쓰려한다면 -> boxing
객체를 기본type으로 쓰려한다면 -> unboxing
이때 boxing이 된 기본 type은 객체이므로 heap 메모리에 올라가고
객체였던 것을 기본type으로 unboxing 할 경우엔 stack 메모리에 올라가게 됩니다.
ex )
int i = 123; // a value type
object o = i; // boxing
int j = (int) o; // unboxing
java 1.4버전 까지는 wrapper 클래스를 사용함으로서 이를 명시적으로 작성해야했으나 1.5버전부터는 wrapper클래스를 안쓰는 방향으로 지양합니다.
int i = 123;
Integer wrapI = new Integer(i); // Boxing개념
i = wrapI.intValue(); // Unboxing개념
(주절주절 : 제가 알기론 과거 java에서 마소가 임의적으로 JVM을 수정하여 j++이 만들어지고 j#이 만들어졌는데 java의 아버지 고슬링이 java를 open한 대신에 JVM을 건드리지 말라는 약관을 위배하여 j#을 만든 마소를 상대로 소송이 있었는데 마소가 크게 패하고 이때부터 마소의 익스플로러 브라우저에서 java를 지원하지 않은 것으로 알고 있습니다. 결국 java의 applet 같은 동적처리에 효과적인 기능들을 못쓰게 되자 flash가 그 대안으로 나왔고 flash전성시대를 만든 것으로 알고 있습니다. 당시엔 인터넷 브라우저라면 익스플로러뿐이라는 생각이 들만큼 마소의 독점력이 어마어마 했다는...)
'Programming > JAVA' 카테고리의 다른 글
java : 문자열을 int형으로 형변환할때 주의점(parseInt, valueOf) (0) | 2011.03.31 |
---|---|
instanceof 연산자 (0) | 2011.02.25 |
DB튜닝시 varchar2로 입력가능한 글자수 계산에 대해 유의할 점. (0) | 2011.01.05 |
java : for문 (배열 등과 같은 자료구조의 각 value를 쉽게 접근하는 방법) (0) | 2010.10.11 |
jakarta(자카르타) 한글화 홈페이지. (0) | 2010.03.14 |