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 하는데도 에러가 발생하지 않죠.
이때 자동으로 기본형을 래퍼클래스로 변환해 주는 것 입니다. 이를 오토박싱!
리스트에서 래퍼클래스를 빼낼 때 자동으로 기본형으로 변환되는 것을 언박싱!
기본형을 상품, 래퍼클래스를 박스로 생각하시면 이해가 잘 되실 겁니다.
그래서 상품(기본형)을 박싱(기본형->래퍼클래스)한다 언박싱(래퍼클래스->기본형) 한다로 이해하시면 됩니다.!
'Programing > JAVA' 카테고리의 다른 글
Java CBOR parsing, CBOR to JSON Object (0) | 2018.07.13 |
---|---|
JDBC, DBCP란? 웹 어플리케이션의 DB접속에 대한 고찰 (0) | 2018.07.02 |
Java 8 Stream 을 사용해보자. About Stream in collection of java8 (0) | 2018.05.23 |
Java List<VO> to JsonArray, String, StringBuilder, StringBuffer (0) | 2018.05.03 |
알기쉽게 정리한 JAVA의 컴파일과정 및 JVM 메모리 구조, JVM GC (0) | 2018.05.02 |
댓글