μλ°λ int, long, boolean κ°μ λ³μμ κΈ°λ³Έ μλ£ν(Primitive Type)μ μ 곡νλ€. νμ§λ§ μ΄λ° κΈ°λ³Έμλ£νμ 컬λ μ (Collection)μ΄λ μ§λ€λ¦(Generic)μμ μ νμ μΌλ‘ μ¬μ©κ°λ₯νλ€. λ°λΌμ μλ°λ κ° κΈ°λ³Έ μλ£νμ λμλλ λνΌ ν΄λμ€(Wrapper Class) μ 곡νκ³ μλ€.
public class Boxing {
public static void main(String[] args) {
int i = 10;
Integer wI = new Integer(a); // int Boxing λμ
double d = 3.14;
Double wD = new Double(d); // double Boxing λμ
boolean b = true;
Boolean wB = new Boolean(b); // boolean Boxing λμ
}
}
public class Boxing {
public static void main(String[] args) {
Integer wI = new Integer(10);
int i = wI.intValue(); // Integer Unboxing λμ
Double wD = new Double(3.14);
double d = wD.doubleValue(); // Double Unboxing λμ
Boolean wB = new Boolean(true);
boolean b = wB.booleanValue(); // Boolean Unboxing λμ
}
}
μ€ν λ°μ±(Auto boxing)κ³Ό μ€ν μΈλ°μ±(Auto unboxing)
λͺ
μμ μΌλ‘ κΈ°λ³Έ μλ£νμ λνΌν΄λμ€λ‘ λ°μ±νκ³ μΈλ°μ±νλ λμμ ν¬κ² μ΄λ ΅μ§ μλ€. λ€λ§ μ΄λ¬ν κΈ°λ³Έμλ£νκ³Ό λνΌ ν΄λμ€κ°μ λ³νμ΄ λ¬΅μμ (Implicit)μΌλ‘ μΌμ΄λλ κ²½μ°κ° μλ€. μλ°μ νΉμ λ²μ (JDK 1.5)λΆν°λ μλ° μΈμ΄μμ λνΌ ν΄λμ€μ κΈ°λ³Έ μλ£ν μ¬μ΄μ λ³νμ μλμΌλ‘ ν΄μ£Όλ λμμ΄ μΆκ°λμλ€. μ΄λ₯Ό μ€ν λ°μ±(Auto Boxing)κ³Ό μ€ν μΈλ°μ±(Auto Unboxing)μ΄λΌκ³ νλ€.
λ€μ μλ₯Ό μ΄ν΄λ³΄μ.
public class WrapperEx04 {
public static void main(String[] args) {
int i = 10;
Integer wI = i; // Auto boxing
int i1 = wI; // Auto unboxing
double d = 3.14;
Double wD = d; // Auto boxing
double d1 = wD; // Auto unboxing
boolean b = true;
Boolean wB = b; // Auto boxing
boolean b1 = wB; // Auto unboxing
}
}
int ν λ³μμ 10μ΄λΌλ κ°μ λμ ν λ€μ, μ΄λ₯Ό Integer λνΌ ν΄λμ€μ ν λΉνλ€. μλλ intλΌλ κΈ°λ³Έ μλ£νμ Integer κ°μ²΄λ₯Ό μ°Έμ‘°νλ λ³μμ ν λΉν μ μλ€.
Integer wI = new Integer(10); // λͺ
μμ λ°μ±
Integer wI1 = 10; // μ€ν λ°μ±
νμ§λ§ JDK 1.5 λ²μ λΆν°λ μ λ κ΅¬λ¬Έμ΄ κ°μ μλ―Έλ₯Ό κ°κ² λλ€. μΈμ΄κ° μλμΌλ‘ λ°μ±μ ν΄μ€λ€νμ¬ μ€ν λ°μ±μ΄λΌκ³ λΆλ₯Έλ€.
μ€ν μΈλ°μ±λ λ§μ°¬κ°μ§λ€.
Integer wI = new Integer(10);
int i1 = wI.intValue(); // μΈλ°μ±
int i2 = wI; // μ€ν μΈλ°μ±
10μ΄λΌλ μ μκ° λ΄κΈ΄ λνΌ ν΄λμ€λ₯Ό i1 λ³μμ μΈλ°μ±νλ€. i2 λ³μμλ μ€ν μΈλ°μ±λμ΄ μμ 10μ΄λΌλ κ°μ΄ λ΄κΈ΄λ€.
λνΌ ν΄λμ€μ μ°μ°
C++κ³Ό λ€λ₯΄κ² μλ°λ μ°μ°μλ₯Ό μ€λ²λ‘λ©ν μ μλ€. κ·Έλ λ€λ©΄ λ€μ μ½λλ μ΄λ»κ² λμν κΉ?
Integer i1 = new Integer(10);
Integer i2 = new Integer(20);
Integer i3 = i1 + i2; // λμν κΉ?
λ κ°μ λνΌ ν΄λμ€μΈ i1κ³Ό i2λ₯Ό '+' μ°μ°μλ‘ μ°κ²°νλ©΄ μ΄λ»κ² λ κΉ? μλ λνΌ ν΄λμ€λ κ°μ²΄λ‘ λ§λ€μ΄μ§κΈ° λλ¬Έμ + μ°μ°
μ ν μ μλ€. νμ§λ§ μλ°μμλ λνΌ ν΄λμ€μ λν μ°μ°μ΄ μλλ λ, μ€ν μΈλ°μ±μ ν΄μ λ λ€ intν
μΌλ‘ λ§λ€μ΄μ μ°μ°μ μννλ€. λνΌ ν΄λμ€μ κΈ°λ³Έν κ°μ μ°μ°λ λ§μ°¬κ°μ§λ‘ λμνλ€.
μ£Όμν΄μΌ ν μ°μ°μ '==' μ°μ°μ΄λ€.
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
if (i1 == i2)
System.out.println("κ°λ€");
else
System.out.println("λ€λ₯΄λ€");
μ΄ μ½λλ₯Ό μννλ©΄, "λ€λ₯΄λ€"λΌλ λ¬Έμμ΄μ΄ μΆλ ₯λλ€. '==' μ°μ°μ μ°Έμ‘° λ³μμ μ£Όμκ°μ λΉκ΅νλ μ°μ°μ΄λ€. i1κ³Ό i2λ κ·Έ μμ λ΄κ³ μλ κ°μ κ°μ§λ§ ν λ©λͺ¨λ¦¬μ λ³λ μ£Όμ곡κ°μ λ§λ€μ΄μ§λ λ€λ₯Έ κ°μ²΄λ€. λ°λΌμ μ°Έμ‘° κ°μ΄ λ€λ₯΄κΈ° λλ¬Έμ i1 == i2 λΌλ 쑰건μ κ±°μ§μ΄ λλ€.
λ§μ½ λ΄μ©μ κ²μ¬νλ €λ©΄ '.equals()' λ©μλλ₯Ό μ¬μ©ν΄μΌνλ€.