Notice
suyeonme
[Java] Boxing, Unboxing이란? 본문
boxing, Unboxing이란?
boxing이란, 기본형 타입(primitive type)을 wrapper type으로 변환하는 것을 말한다.
- int -> Integer
- long -> Long
- boolean -> Boolean
unboxing이란, wrapper type을 기본형 타입(primitive type)으로 변환하는 것을 말한다.
- Integer -> int
- Long -> long
- Boolean -> boolean
Wrapper Class
자바의 자료형은 기본형(primitive type)과 참조형(reference type)으로 나뉜다. 기본형의 데이터를 객체로 표현해야 하는 경우, wrapper class를 사용하여 기본형을 객체로 다룰 수 있다. 즉 Wrapper class는 boxing, unboxing 메커니즘을 제공하며, 이러한 메커니즘을 Type Casting이라고 한다.
1) 명시적으로 변환
Integer num1 = new Integer(1);
int num2 = (int)num;
2) 자동 변환
J2SE 5.0부터는 boxing을 자동으로 수행하며, 이러한 메커니즘을 AutoBoxing이라고 한다.
Integer num1 = new Integer(1);
int num2 = num1;
Boxing이 필요한 경우
- Collection에는 객체만 사용할 수 있다.
- 직렬화(Serialization)를 하는 경우, 객체를 스트림으로 변환한다. 따라서 기본형 데이터를 사용하고있다면 객체로 변환해야한다.
- 멀티스레드 환경에서 동기화(Synchronization)를 하는 경우, 객체만 사용할 수 있다.
Boxing, unboxing의 오버헤드
boxing, unboxing 과정은 서로 다른 타입간의 형변환으로, 내부적으로 오버헤드를 일으킨다. 따라서 작성한 코드가 autoBoxing이 되는지 항상 신경쓰면서 코드를 작성해야한다.
'프로그래밍👩🏻💻 > Java' 카테고리의 다른 글
[Java] 메서드 참조(Method Reference)란? (0) | 2023.03.01 |
---|---|
[Java] 람다 표현식(Lamda Expression)과 함수형 인터페이스(Functional Interface) (0) | 2023.03.01 |
[Java] Servlet이란? (1) | 2022.10.11 |
[Java] BufferedReader/BufferedWriter (0) | 2022.08.07 |
[Java] Array, ArrayList (0) | 2022.06.06 |
Comments