1. κ°λ πΆβοΈ
μΌλ°μ μΌλ‘ κ°μ²΄μ§ν₯ κ°λ μμ λͺ¨λ κ²μ κ°μ²΄λ‘ λ€λ£¨μ΄μ ΈμΌ νλ€. νμ§λ§ μλ°μμ 8κ°μ κΈ°λ³Έν(boolean, char, byte, short, int, long, float, double)μ κ°μ²΄λ‘ λ€λ£¨μ΄μ§μ§ μλλ€. μλ°κ° μμ ν κ°μ²΄ μ§ν₯ μΈμ΄κ° μλλΌλ μ΄μΌκΈ°λ₯Ό λ£μ§λ§, λ³΄λ€ λμ μ±λ₯μ μ»μ μ μλ€λ μ₯μ μ΄ μλ€.
νλ‘κ·Έλλ°μ νλ€ λ³΄λ©΄ κΈ°λ³Έν(Primitive Type) λ³μλ μ΄μ© μ μμ΄ κ°μ²΄λ‘ λ€λ€μΌ νλ κ²½μ°κ° μλ€. μλ₯Ό λ€λ©΄, 맀κ°λ³μλ‘ κ°μ²΄λ₯Ό μꡬν λ, κΈ°λ³Έν κ°μ΄ μλ κ°μ²΄λ‘ μ μ₯ν΄μΌ ν λ, κ°μ²΄ κ°μ λΉκ΅κ° νμν λ λ±λ±μ κ²½μ°μλ κΈ°λ³Έν κ°λ€μ κ°μ²΄λ‘ λ³ννμ¬ μμ μ μνν΄μΌ νλ€.
μ΄λ΄ λ λνΌ ν΄λμ€λ₯Ό μ¬μ©νμ¬ κ°κ°μ νμ μ ν΄λΉνλ λ°μ΄ν°λ₯Ό μΈμλ‘ μ λ¬λ°μ ν΄λΉ κ°μ κ°μ§λ κ°μ²΄λ‘ λ§λ€ μ μλ€. 8κ°μ κΈ°λ³Ένμ λνν 8κ°μ λνΌν΄λμ€λ₯Ό μ΄μ©νλ©΄ κΈ°λ³Έν κ°μ κ°μ²΄λ‘ λ€λ£° μ μλ€. λνΌ ν΄λμ€λ λͺ¨λ java.lang ν¨ν€μ§μ ν¬ν¨λμ΄ μ 곡λλ€.
κΈ°λ³Έ νμ | λνΌ ν΄λμ€ |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2. λ°μ±(Boxing) & μΈλ°μ±(UnBoxing) πΆβοΈ
μμμ μ΄ν΄λ³Έ κ²μ²λΌ λνΌ ν΄λμ€λ₯Ό μ΄μ©νμ¬ κ°μ ν¬μ₯νμ¬ κ°μ²΄λ‘ λ§λ€ μ μλ€. μμ£Ό λΉμ°νκ² μκ°ν μ μλ―μ΄ 'ν¬μ₯μ νλ κ²'κ³Ό 'ν¬μ₯μ λ―λ κ²' λ κ°μ§μ νμκ° μμ κ²μ΄λ€.
μ΄κ²μ λ°μ±(Boxing)κ³Ό μΈλ°μ±(UnBoxing)μ΄λΌκ³ νλ€.
λ°μ±κ³Ό μΈλ°μ±μ κ°κ° λ€μκ³Ό κ°μ λ³νμ μλ―Ένλ€.
- λ°μ± (Boxing)
κΈ°λ³Έ νμ μ λ°μ΄ν° → λνΌ ν΄λμ€μ μΈμ€ν΄μ€ - μΈλ°μ± (UnBoxing)
λνΌ ν΄λμ€μ μΈμ€ν΄μ€μ μ μ₯λ κ° → κΈ°λ³Έ νμ μ λ°μ΄ν°
// λ°μ±(Boxing)
Integer num1 = Integer.valueOf(27); // new Integer(int value)λ μκ°κ³Ό 곡κ°μμ λ¬Έμ λ‘ Deprecated λμλ€.
// μΈλ°μ±(UnBoxing)
int num2 = num1.intValue();
3. μ€ν λ°μ±(AutoBoxing) & μ€ν μΈλ°μ±(AutoUnBoxing) πβοΈ
JDK 1.5λΆν°λ λ°μ±κ³Ό μΈλ°μ±μ΄ νμν μν©μμ μλ° μ»΄νμΌλ¬κ° μλμΌλ‘ μ²λ¦¬ν΄ μ€λ€. μ΄λ₯Ό μ€ν λ°μ±(AutoBoxing)κ³Ό μ€ν μΈλ°μ±(AutoUnBoxing)μ΄λΌκ³ νλ€.
// μ€ν λ°μ± (Auto Boxing)
Integer num3 = 17;
// μ€ν μΈλ°μ± (Auto UnBoxing)
int num4 = num3;
μ€ν λ°μ±μ μ΄μ©ν΄μ κΈ°λ³Ένκ³Ό μ°Έμ‘°ν κ°μ νλ³νκ³Ό μ°μ°μ μνν μ μλ€.
int i = 5;
Integer intg = Integer.valueOf(10);
Long lng = 100L;
// int + Integer
int sum1 = i + intg; // 15
// int + Long
long sum2 = i + lng; // 105
μ£Όμν΄μΌ ν μ μ κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ μ°μ°μ μ€ν λ°μ±μ΄λΌλ μ»΄νμΌλ¬κ° μ 곡νλ κΈ°λ₯ λλ¬Έμ κ°λ₯ν κ²μ΄λ€. κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ μ°μ°μ΄ μλ κ°λ₯ν κ²μ΄λΌκ³ μκ°νλ©΄ μ λλ€.
π μ±λ₯ λΉκ΅
νΈμμ±μ μν΄ μ€ν λ°μ±κ³Ό μ€ν μΈλ°μ±μ μ 곡νκ³ μμ§λ§, λ€λ₯Έ νμ κ°μ ν λ³νμ μ ν리μΌμ΄μ μ μ±λ₯μ μν₯μ λ―ΈμΉλ€. λΆνμν μ€ν λ°μ±κ³Ό μ€ν μΈλ°μ±μ΄ μΌμ΄λλ©΄ λΉμ°ν λ λ§μ μκ°μ΄ μλΉλλ€.
// λΆνμν μ€ν λ°μ± O
long start = System.currentTimeMillis();
Integer num1;
for(int i = 0; i < 1_000_000_000; i++){
num1 = Integer.valueOf(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start); // 8
----------
// λΆνμν μ€ν λ°μ± X
long start = System.currentTimeMillis();
int num1;
for(int i = 0; i < 1_000_000_000; i++){
num1 = i;
}
long end = System.currentTimeMillis();
System.out.println(end - start); // 3
κ·Έλ¬λ―λ‘ μ±λ₯μ κ³ λ €νλ€λ©΄ κΌ νμν μν©μ΄ μλ λ μ€ν λ°μ±κ³Ό μ€ν μΈλ°μ±μ μ§μνλ κ²μ΄ μ’λ€. (IntelliJμμλ λΆνμν λ°μ±μ΄ μΌμ΄λλ©΄ 'Unnecessary boxing'μ΄λΌκ³ μΉμ νκ² μλ €μ£Όκ³ μλ€.)
4. λνΌ ν΄λμ€ λλ± λΉκ΅ πβοΈ
μμμ μ΄ν΄λ³Έ κ²μ²λΌ λνΌ ν΄λμ€λ μ€ν λ°μ±κ³Ό μ€ν μΈλ°μ±μ μ΄μ©ν΄μ λΉκ΅ μ°μ°μ΄ κ°λ₯νλ€.
νμ§λ§ λλ± μ¬λΆ νλ¨μ ν λλ μ£Όμκ° νμνλ€. λνΌ ν΄λμ€λ κ°μ²΄μ΄λ―λ‘ λλ± μ°μ°μ(==)λ₯Ό μ¬μ©νκ² λλ©΄, λ μΈμ€ν΄μ€ κ°μ λΉκ΅νλ κ²μ΄ μλλΌ λ μΈμ€ν΄μ€ μ£Όμκ°μ λΉκ΅νκ² λλ€.
Integer num1 = Integer.valueOf(200);
Integer num2 = Integer.valueOf(200);
System.out.println(num1 == num2); // false
System.out.println(num1.equals(num2)); // true
κ·Έλ¬λ―λ‘ μΈμ€ν΄μ€μ κ°μ΄ κ°μμ§ λΉκ΅ν λμλ equalsλ₯Ό μ¬μ©ν΄μΌ νλ€.
π μ£Όμμ¬ν
μ¬κΈ°μ μ‘°κΈ μ£Όμν μ μ΄ μλ€. κΈ°μ‘΄ μ± κ³Ό μλ£μμλ Integer.valueOf()κ° μλ new Integer()λ₯Ό μ΄μ©ν΄μ μ€λͺ μ ν΄μ£Όκ³ μλ€. new Integer()λ₯Ό νλ©΄ λΉμ°ν μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄λ―λ‘ '=='λ₯Ό νλ©΄ 무쑰건 falseκ° λμ¨λ€.
νμ§λ§ Integer.valueOf()μμλ μ‘°κΈ λ€λ₯΄λ€. Integer.valueOf()λ -128~127μ μνλ Integerλ μΊμ±ν΄ λ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μμ΄μ μλ‘μ΄ μΈμ€ν΄μ€κ° μκΈ°μ§ μμ μλ μλ€. κ·Έλμ λ§μ½ κ°μ 100μΌλ‘ μμ μ½λλ₯Ό λλ €λ³Έλ€λ©΄ μλμ κ°μ΄ trueκ° λμ€κ² λλ€.
Integer num1 = Integer.valueOf(100);
Integer num2 = Integer.valueOf(100);
System.out.println(num1 == num2); // true
System.out.println(num1.equals(num2)); // true
new Integer()κ° μλ° 9λΆν° Deprecated λμκΈ° λλ¬Έμ μ΄ μ μ μ μνλλ‘ νμ. μΌλ¨ μ΄λ² κΈμμλ λνΌ ν΄λμ€λ₯Ό μ΄μ©ν΄μ λλ± λΉκ΅λ₯Ό νλ©΄ μΈμ€ν΄μ€ μ£Όμκ°μ λΉκ΅νλ€λ κ²μ κ°μ‘°νκΈ° μν΄ μΌλ¨μ 'λνΌ ν΄λμ€λ‘ λλ± λΉκ΅λ₯Ό ν λμλ equalsλ₯Ό μ¬μ©νμ'λΌκ³ νκ³ λμ΄κ°λλ‘ νλ€. (μ΄ μ£Όμ μ λν΄μλ λ€μ λΈλ‘κΉ μ νκ² λ€.)
5. μλ£ν λ³ν λ©μλ π§βοΈ
λνΌ ν΄λμ€μμ μ체 μ§μνλ parseType() λ©μλλ₯Ό μ΄μ©νμ¬ λ°μ΄ν° νμ μ ν λ³νμ ν μ μλ€.
String strTen = "10";
String strTrue = "true";
String strFalse = "false";
byte b = Byte.parseByte(strTen); // 10
int i = Integer.parseInt(strTen); // 10
short s = Short.parseShort(strTen); // 10
long l = Long.parseLong(strTen); // 10
float f = Float.parseFloat(strTen); // 10.0
double d = Double.parseDouble(strTen); // 10.0
boolean boolTrue = Boolean.parseBoolean(strTrue); // true
boolean boolFalse = Boolean.parseBoolean(strFalse); // false
ν΄λΉ κΈμ
λ¨κΆμ± λμ 'μλ°μ μ μ',
Inpa λμ '[JAVA] Wrapper ν΄λμ€μ Boxing & UnBoxing μ΄μ 리',
TCP SCHOOLμ 'Wrapper ν΄λμ€'
λ₯Ό μ°Έκ³ νμμ΅λλ€.
'π JAVA > μ£Όμ κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ³ν(μΊμ€ν , Casting) - μ μΊμ€ν (Up-Casting), λ€μ΄μΊμ€ν (Down-Casting) (0) | 2023.05.24 |
---|---|
μ λ€λ¦(Generics) - κΈ°λ³Έ κ°λ (0) | 2023.05.13 |
clone() (0) | 2023.04.07 |
μμ 볡μ¬(Shallow Copy) vs κΉμ 볡μ¬(Deep Copy) (0) | 2023.04.07 |
JVM λ©λͺ¨λ¦¬ ꡬ쑰 (0) | 2023.03.24 |