Java

[Java] Wrapper 클래스 : 기본 타입의 데이터를 객체로 취급하다.( 오토박싱, 오토언박싱)

디벨로펄 2022. 9. 3.
반응형

Wrapper(포장) 객체 : 기본 타입의 데이터를 포장하기 때문에 붙여진 이름이다.

 

래퍼 클래스가 사용되는 이유는 기본데이터 타입이 아닌 Object가 필요한 경우가 있기 때문이다.

 

기본 타입이 아닌 Object가 필요한 경우.

1. Generic에서 타입 파라미터로 참조타입(Reference Type)만 정할 수 있다.

int, short, double 등 기본 타입(primitive type)은 올 수 없다.

→ 이와 같은 맥락으로 Collection 프레임 워크는 제네릭을 사용하기 때문에 객체 형태의 데이터만 파라미터로 올 수 있다.

그래서 우리가 ArrayList<Integer>, ArrayList<Double>과 같이 사용하는 것이다.

2. 기본 자료형의 값을 문자열로 변환하는 경우, 혹은 반대의 경우

Double d = 10.0;
String s;
s = d.toString(); // 10.0 -> "10.0"이라는 문자열로 반환
double dd =Double.parseDouble(s) // 문자열을 double로 바꿔줌.

위에서 Double이 Wrapper 클래스이다.

 

Java에서 기본 타입래퍼 클래스

byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

* String은 기본 타입이 아니었구나..ㄷ..ㄷ 그래서 equals로 동일함을 비교해야하구나..깨달음 ㅋㅋ

 

특징

기본 자료형을 감싼다.

String과 같이 불변성을 지닌다. wrapper 클래스 내의 객체 값은 변경이 불가능하다.

 

 

 

 

부록 : 오토 박싱, 오토 언박싱

Wrap이 포장한다는 의미이다. 박싱과 같은 맥락!

오토 박싱은 자동으로 포장해주는 것.

오토 언박싱은 자동으로 포장을 풀어주는 것이다.

예를 들어 보자.

Integer i = 1; // 1이라는 기본형 정수타입이 Integer라는 Wrapper로 자동으로 포장
int a=i; // Integer라는 Wrapper에서 자동으로 기본형 정수타입으로 포장이 풀어짐.

첫번째 것을 오토 박싱

두번째 것을 오토 언박싱이라고 합니다.

참 쉽죠?

또 다른 경우 case : Collection에서의 예시를 보도록 하죠

ArrayList<Integer> list = new ArrayList<>();
list.add(10);//이 과정에서 10-> Integer(10)이 되어 wrapper 클래스로 저장. 오토 박싱
list.add(9); // 마찬가지
int i = list.get(0); // list.get(0)-> Integer(10)을 리턴 -> 자동으로 기본형 타입으로 바뀐다. : 오토 언박싱

다른 타입에 대해서는 아래 표를 참조하시면 되겠습니다.

byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

감사합니다.

잘못된 내용은 댓글로 말씀 부탁드리겠습니다.

반응형

댓글