Wrapper Class/ Boxing
✅ Wrapper Class
- primitive data type는 객체 ❌
primitive type: int, long, float, double, boolean… - Wrapper Class는 클래스이기 때문에 객체의 reference type ⭕️
wrapper class: Integer, Long, Float, Double, Boolean
Wrapper Class 장점
- 객체지향적 프로그래밍 실현 & 자료구조 일관성 유지
객체지향을 좋아하는 사람들이 “JAVA의 정체성은 OOP니까 primitive type도 객체로 만들어보자” 라는 취지에서 나옴. - null을 선언할 수 있음
- library사용할 때 wrapper을 사용하면 지원받을 수 있다.
- GENERIC 프로그래밍은 wrapper만 지원하기 때문이다.
💡 어떤 때 primitive쓰고 어떤 때 wrapper쓰나요?
integer에 null을 넣고 싶을 때
Wrapper은 integer 객체이기 때문에 null을 넣을 수가 있다.
객체이다보니까 일관성이 있다.
1
2
Integer integerNull= new Integer(0);
int integerNull= null;
🆚 그러나 int는 null을 넣을 수가 없잖아!
✅ Boxing, unboxing
- Boxing: 기본 타입을 래퍼 클래스에 매칭하는 것, 객체로 선언
- primitive type ➡️ wrapper class
- unboxing: 객체 선언 전 value를 구해오는 것
- wrapper class ➡️ primitive type
- 요즘은 오토 박싱, 오토 언박싱을 한다.
- 그래서 그냥 class로만 선언해도 된다.
✅ Wrapper Class 사용법
integer타입의 reference type임에도 operator사용해 더하고 뺴면 값 구할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package chap45_wrapper;
public class WrapperClassTest {
public static void main(String[] args) {
//⭐️ Integer
Integer integerBoxing= new Integer(20); //Integer 이라는 wrapper로 boxing
int intUnboxing= integerBoxing.intValue(); //unboxing
System.out.println(integerBoxing); //20
System.out.println(intUnboxing); //20
//autoboxing
Integer integerAuto= 30; //Integer integerAuto= new Integer(30);
System.out.println(integerAuto); //30
//auto Unboxing
int intAuto= integerAuto;
System.out.println(intAuto); //30
//operator 가능하다
System.out.println(integerBoxing + intUnboxing); //20+20= 40
System.out.println(integerBoxing + integerAuto); //20 + 30= 50
//⭐️ char
Character character1= new Character('A'); //Character 이라는 wrapper로 boxing
char ch1= character1.charValue(); //unboxing
System.out.println(character1); //A
System.out.println(ch1); //A
//autoboxing, autoUnboxing
Character character2= 'B'; //autoboxing
char ch2= character2; //autoUnboxing
System.out.println(character2); //B
System.out.println(ch2); //B
//❗️ char valueOf 배열일 때 주의할 것
char[] characters= {'a', 'b', 'c'};
String str= String.valueOf(characters); //abc
//⭐️ Boolean
Boolean boolean1= new Boolean(true); //boolean 이라는 wrapper로 boxing
boolean bool1= boolean1.booleanValue(); //unboxing
//autoboxing, autounboxing
Boolean boolean2= false; //autoboxing
boolean bool2= boolean2; //autoUnboxing
System.out.println(bool1 && bool2); //false
System.out.println(boolean1 || bool2); //true
}
}
This post is licensed under CC BY 4.0 by the author.