본문 바로가기

Programming/Java

[Java] Boxing, Unboxing

자바는 참조형(Refernce Type)이거나 기본형(Primitive Type)이다. 하지만 제네릭 타입은 참조형만 사용이 가능하기 때문에 자바에서는 기본형을 참조형으로 변환하는 기능을 제공해준다. 이러한 기능을 박싱(boxing), 반대를 언박싱(unboxing)이라고 한다.

 

Prmitive Type	==== boxing =====>	Wrapper Type 
		<==== unboxing ====	 

 

💡 Wrapper 클래스

기본 타입(byte, char, int, double, ...)의 데이터를 저장하기 위한 객체를 Wrapper 클래스, 포장 객체(Byte, Character, Integer, Double, ...)라고 한다. 기본 타입의 값을 내부에 두고 포장하기 때문에 포장 객체라고 부른다.

특징은 포장하고 있는 기본 타입의 값은 final로 변경할 수 없기 때문에, 만약 변경하고 싶다면 새로운 포장 객체를 만들어야 한다.

 

 

자바에서는 이를 프로그래머가 편리하게 코드를 작성할 수 있는 오토 박싱(auto boxing)을 제공하는데 박싱과 언박싱이 자동으로 이루어지게 된다

 

List<Integer> list = new ArryaList<>();
list.add(1); // int -> Integer
Integer number = new Integer(100);
int sum = 10 + number; // Integer -> int

 

하지만 이러한 변환 과정은 비용이 소모된다. 또한 박싱된 값은 Heap영역에 저장되기 때문에 보다 많은 메모리를 소모하고 가져올 때에도 메모리 탐색 과정이 필요하다.

 

'Programming > Java' 카테고리의 다른 글

[Java] 스트림(Stream)  (0) 2021.05.11
[Java] 람다(lambda)  (0) 2021.05.06
[Java] Arrays.sort(), Collections.Sort() 속도 비교  (0) 2021.03.04
[Java] 어노테이션(Annotation)  (0) 2021.03.01
[Java] Java란? Java의 특징  (0) 2021.02.16