Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Wrapper ν΄λž˜μŠ€λž€?

Table of contents


μžλ°”μ—λŠ” Primitive type(μ›μ‹œ νƒ€μž…) μžλ£Œν˜•μ€ 8κ°œκ°€ μžˆλ‹€.

byte, short, int, long, float, double, char, boolean

Primitive type(μ›μ‹œ νƒ€μž…) μžλ£Œν˜•μ€ 각 μŠ€λ ˆλ“œμ˜ stack λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ €μž₯λ˜μ–΄ κ΄€λ¦¬λœλ‹€.

λ°˜λ©΄μ— 객체와 같이 μ°Έμ‘° νƒ€μž… λ°μ΄ν„°λŠ” Heap μ˜μ—­μ— μƒμ„±λ˜κ³ , stackμ—λŠ” Heapμ˜μ—­μ˜ μ£Όμ†Œκ°’μ„ 톡해 μ°Έμ‘°ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€.


μ›μ‹œ νƒ€μž…μ€ 각각 Wrapper Class(랩퍼 클래슀) λ₯Ό κ°–κ³  μžˆλŠ”λ°,

μ˜ˆμ‹œλ‘œ, int의 경우 Integerκ°€ 있고 long의 경우 Long이 μžˆλ‹€.

int num = 1;
Integer boxed = new Integer(num);
int unBoxed = boxed.intValue();

μœ„μ™€ 같이 μ›μ‹œ νƒ€μž… int인 num을 랩퍼 클래슀둜 λ³€ν™˜ν•  수 μžˆλ‹€.

μ›μ‹œνƒ€μž…μ—μ„œ 랩퍼클래슀둜 λ³€ν™˜ν•˜λŠ” 과정을 Boxing(λ°•μ‹±), 랩퍼 ν΄λž˜μŠ€μ—μ„œ μ›μ‹œ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 과정을 UnBoxing(μ–Έλ°•μ‹±) 이라고 ν•œλ‹€.


Integer autoBoxed = 10;
int autoUnBoxed = autoBoxed;

μœ„μ™€ 같이 μ›μ‹œ νƒ€μž…μ— 랩퍼 클래슀λ₯Ό λŒ€μž…ν•˜κ±°λ‚˜ κ·Έ λ°˜λŒ€ 상황일 λ•Œ, ν˜• λ³€ν™˜μ΄ μžλ™μœΌλ‘œ μ΄λ£¨μ–΄μ§€λŠ”λ° 이λ₯Ό μ˜€ν†  λ°•μ‹± Β· μ˜€ν†  언박싱이라고 ν•œλ‹€.


⚠️ 주의점!

public static void main(String[] args) {
    Long sum = 0L;
    for (long i = 0; i < 1000000; i++) {
        sum += i;
    }
}

μœ„μ™€ 같은 μ½”λ“œλŠ” sum이 랩퍼 νƒ€μž…μ΄κ³  λ°˜λ³΅λ¬Έμ„ μˆ˜ν–‰ν•˜λ©΄μ„œ Long 객체가 100만개 μƒμ„±λ˜κ²Œ λœλ‹€.

λ”°λΌμ„œ, κΌ­ ν•„μš”ν•œ 상황인지 ν˜Ήμ€ μ„±λŠ₯상 λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•˜κ³  랩퍼 클래슀λ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€.


μ°Έκ³ ν•œ λΈ”λ‘œκ·Έ

  1. https://jaehoney.tistory.com/101