Backend/Java

AutoBoxing과 AutoUnBoxing

findmypiece 2021. 8. 25. 23:13
728x90

Java 1.5가 널리 쓰이던 시절 Java 개발자 면접에 유행처럼 쓰이던 질문이 오토박싱과 오토언박싱 이다. 지금은 너무도 당연해서 이 용어조차 모르고 지내고 있는데 갑자기 생각하려니 기억이 안나 미리 정리해 놓는다.

 

Java에서는 기본타입에 매칭되는 Wrapper 클래스들이 존재한다. int는 Integer, boolean은 Boolean 같은 것들이다. 기본타입의 데이터를 Wrapper 에 넣는 것을 박싱 이라고 하고 반대를 언박싱이라고 한다.

 

Java 1.5 이전에는 이러한 작업시 아래와 같이 명시적으로 변환을 해줘야 했다.

Integer intWrapper = new Integer(1);
int intValue = 1;

int i = (int)intWrapper;
Integer j = new Integer(intValue);

 

그런데 Java 1.5 부터 컴파일러가 오토박싱과 오토언박싱을 지원하게 되어 위와 같은 변환작업을 자동으로 해주게 되었고 아래와 같이 사용할 수 있게 되었다.

Integer intWrapper = new Integer(1);
int intValue = 1;

int i = intWrapper;
Integer j = intValue;

 

참고로 일반적인 데이터 연산시에는 기본타입이 사용되겠지만 Java에서 제공하는 컬렉션 클래스에서는 기본적으로 Wrapper 클래스만 사용할 수 있기 때문에 이 경우 Wrapper 클래스를 사용해야 하고 그 외에도 목적에 의해 기본타입이나 Wrapper 중 하나를 선택적으로 사용하는 경우도 있기 때문에 이러한 오토박싱, 오토언박싱 기능은 매우 편리한 기능이다.

728x90

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

JVM 실행 옵션 정리  (0) 2022.01.10
@JsonCreator  (0) 2021.11.19
@Async, CompletableFuture, parallelStream  (0) 2021.07.14
Collections.EMPTY_LIST, Collections.EMPTY_MAP  (0) 2021.07.12
Map에 stream 사용하기  (0) 2021.06.18