ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๊ธฐ๋ณธํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ํด๋์ค์
๋๋ค.
- boolean -> Boolean
- byte -> Byte
- short -> Short
- int -> Integer
- long -> Long
- float -> Float
- double -> Double
- char -> Character
๋ํผ ํด๋์ค๋ ๊ฐ๊ฐ์ ํ์
์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ํด๋น ๊ฐ์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก, ๋ชจ๋ java.lang ํจํค์ง์ ํฌํจ๋์ด ์ ๊ณต๋ฉ๋๋ค.
์ฐ์ ์ฐ์ ์ฐ์ฐ์ ์ํด ์ ์๋ ํด๋์ค๊ฐ ์๋๋ฏ๋ก ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋จ์ง ๊ฐ์ ์ฐธ์กฐํ๊ธฐ ์ํด ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
๊ธฐ๋ณธ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ํผ ํด๋์ค์ ์ธ์คํด์ค๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋ฐ์ฑ(Boxing), ๋ํผ ํด๋์ค์ ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋ค์ ๊ธฐ๋ณธ ํ์
์ ๋ฐ์ดํฐ๋ก ๊บผ๋ด๋ ๊ณผ์ ์ ์ธ๋ฐ์ฑ(Unboxing)์ด๋ผ๊ณ ํฉ๋๋ค.
JDK 1.5๋ถํฐ ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ด ํ์ํ ์ํฉ์ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค๋๋ค.
์คํ ๋ฐ์ฑ์ ์ด์ฉํ๋ฉด new ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์๋์ผ๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ํ ์คํ ์ธ๋ฐ์ฑ์ ์ด์ฉํ์ฌ ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค.
Integer num = new Integer(17); // ๋ฐ์ฑ
int n = num.intValue(); // ์ธ๋ฐ์ฑ
System.out.println(n); // ์ถ๋ ฅ ๊ฐ: 17
Character ch = 'X'; // Character ch = new Character('X'); : ์คํ ๋ฐ์ฑ
char c = ch; // char c = ch.charValue(); : ์คํ ์ธ๋ฐ์ฑ
System.out.println(c); // ์ถ๋ ฅ ๊ฐ: X
๋ํผ ํด๋์ค์ ๋น๊ต ์ฐ์ฐ๋ ์คํ ์ธ๋ฐ์ฑ์ ํตํด ๊ฐ๋ฅํด์ง์ง๋ง, ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋๋ฑ ์ฌ๋ถ ํ๋จ์ ๋น๊ต ์ฐ์ฐ์์ธ ๋๋ฑ ์ฐ์ฐ์(==)๋ฅผ ์ฌ์ฉํด์๋ ์ ๋๋ฉฐ, equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ๋ง ํฉ๋๋ค.
๋ํผ ํด๋์ค๋ ๊ฐ์ฒด์ด๋ฏ๋ก ๋๋ฑ ์ฐ์ฐ์(==)๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ๋ ์ธ์คํด์ค์ ๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด ์๋๋ผ ๋ ์ธ์คํด์ค์ ์ฃผ์๊ฐ์ ๋น๊ตํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ๋ ์ธ์คํด์ค๋ฅผ ๋๋ฑ ์ฐ์ฐ์(==)๋ก ๋น๊ตํ๊ฒ ๋๋ฉด, ์ธ์ ๋ false ๊ฐ์ ๋ฐํํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋๋ฑ ์ฌ๋ถ๋ฅผ ์ ํํ ํ๋จํ๋ ค๋ฉด equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.