Boxing & Unboxing

Java 의 λ°μ΄ν„°λŠ” ν΄λž˜μŠ€λ‚˜ 객체와 같은 μ°Έμ‘°μžλ£Œν˜• κ³Ό 기본적인 μ›μ‹œνƒ€μž… 을 κ°€μ§ˆ 수 μžˆλ‹€.
μ΄λŠ” λ‹€μ‹œ 말해 각각의 기초 μžλ£Œν˜•μ„ 포μž₯λ˜μ–΄ μžˆλŠ” Wrapper Class 둜 λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€.

  • Boxing : κ°’ (기초 νƒ€μž…) 을 μ°Έμ‘° ν˜•μ‹μœΌλ‘œ λ³€ν™˜
  • Unboxing : μ°Έμ‘° ν˜•μ‹μ„ κ°’ ν˜•μ‹μœΌλ‘œ λ³€ν™˜
κΈ°λ³Έν˜• νƒ€μž… μ°Έμ‘° μžλ£Œν˜• (Wrapper Class)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
void Void
// Boxing
Object a = 20;

// UnBoxing
int b = (int) a;

Boxing κ³Όμ •

Unboxing κ³Όμ •

문제점

  • λͺ¨λ“  객체가 κ°’ ν˜•μ‹μœΌλ‘œ μ–Έλ°•μ‹± 될 수 μ—†κ³ , 이전에 λ°•μ‹±λœ 데이터에 ν•œν•˜μ—¬ 언박싱이 κ°€λŠ₯ν•˜λ‹€.
  • λ˜ν•œ λ°•μ‹±λœ λ°μ΄ν„°μ˜ νƒ€μž…μ„ 따라야 ν•œλ‹€.
  • λ°•μ‹± μž‘μ—…μ€ μ™„μ „νžˆ μƒˆλ‘œμš΄ 객체가 λ§Œλ“€μ–΄μ Έμ•Ό ν•˜λ©° μ΄λŸ¬ν•œ μž‘μ—…μ€ ν• λ‹Ή μž‘μ—…λ³΄λ‹€ μ΅œλŒ€ 20배의 μ‹œκ°„ 이 κ±Έλ¦°λ‹€κ³  ν•œλ‹€
  • μ–Έλ°•μ‹±μ˜ μΊμŠ€νŒ… μ‹œκ°„μ€ ν• λ‹Ήμž‘μ—…λ³΄λ‹€ 4배이상 의 μ‹œκ°„μ΄ κ±Έλ¦°λ‹€κ³  ν•œλ‹€.

Example









Β 






public class Sum {

    // μΊμŠ€νŒ… μ‹œκ°„ 4λ°°, λ°•μ‹± μž‘μ—… 20λ°° 느렀짐 예제
    public static void main (String[] args) {
      // long sum = 0L;
      Long sum = 0L;

      for (long i = 0; i < Integer.MAX_VALUE; i++) {
        sum += i;
      }

      System.out.println(sum);
    }
}

참고자료

http://grayt.tistory.com/87