Programing/JAVA

Java boxing, unboxing 자바 박싱 언박싱 Wrapper Class 확실히 이해하기

리커니 2018. 6. 12.
반응형

Java boxing, unboxing 자바 박싱 언박싱 Wrapper Class 확실히 이해하기

 

이번 포스팅에서는 자바의 박싱과 언박싱에 대해 알아보겠습니다.

개발을 할때 자주 사용하지만, 박싱이 뭔지, 언박싱이 뭔지 용어를 모르는 경우가 있습니다.

이번 기회에 제대로 알고 넘어가도록 하죠.

 

우선 자바의 박싱과 언박싱에 대해 설명하기 위해서는

래퍼 클래스(Wrapper Class)에 대해 알아야 합니다.

 

래퍼 클래스가 무엇이냐..

자바에서 수치나 논리값은 객체가 아니라 기본형으로 처리됩니다. 하지만 컬렉션 클래스에서는 기본형을 사용할 수 없죠.

예를 들어,

 
List<int> list = new ArrayList<>();

 

이런 코드를 보신적은 없으실 겁니다. 이유는 컬렉션 클래스는 객체만 저장 할 수 있기 때문이죠.

 
List<Integer> list = new ArrayList<>();

 

때문에 자바에서는 기본형을 감싸기 위한 클래스가 있습니다. 이를 래퍼 클래스 라고 하죠.

기본형에 대한 래퍼 클래스는 아래와 같습니다.

 

 기본형  래퍼클래스 
 int  java.lang.Integer
 long  java.lang.Long
 double  java.lang.Double
 float  java.lang.Float
 short  java.lang.Short
 boolean  java.lang.Boolean
 char  java.lang.Character

 

int와 char 를 빼고는 모두 그냥 초성을 대문자를 쓰시면 됩니다.

String이 빠진 이유는 객체형 변수기 때문! (String str = new String("난 객체다");)

 

 

 

편리하게도 자바에서는 기본형을 래퍼클래스로 변환해주고, 그 반대도 자동으로 해주는 기능이 있습니다.

이를 오토박싱, 언박싱 이라고 하는 것 입니다.

List<Integer> list = new ArrayList<>();
int num = 1;

list.add(num);  /*오토박싱*/

int num2 = list.get(0); /*언박싱*/

 

위의 예를 보시면 이해가 되실 겁니다.

int 기본형을 Integer로 선언된 리스트에 add 하는데도 에러가 발생하지 않죠.

이때 자동으로 기본형을 래퍼클래스로 변환해 주는 것 입니다. 이를 오토박싱!

리스트에서 래퍼클래스를 빼낼 때 자동으로 기본형으로 변환되는 것을 언박싱!

 

기본형을 상품, 래퍼클래스를 박스로 생각하시면 이해가 잘 되실 겁니다.

그래서 상품(기본형)을 박싱(기본형->래퍼클래스)한다 언박싱(래퍼클래스->기본형) 한다로 이해하시면 됩니다.!

 

 

반응형

댓글

💲 추천 글