Java 오토 박싱과 오토 언박싱

박은빈·2023년 4월 21일
0

자바

목록 보기
16/25

자바에는 기본타입과 Wrapper클래스가 존재한다

  • 기본 타입 : int, long, float, double, boolean 등
  • Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등

위의 기본 타입은 우리가 알고있는 원시형이고 Wrapper 클래스는 기본 타입을 감싸는 객체이다

기본적으로 기본 타입은 값 자체를 저장하고, 메모리를 덜 사용하면서 속도가 빠르다
하지만 왜 Wrapper클래스를 사용할까

바로 기본 타입에 대한 각종 연산을 수행하거나 제공되는 여러 메소드를 활용하여 값을 객체로 다루어야 할 때 사용된다.

Integer.parseInt("1234");

위의 메서드는 우리가 많이 쓰는 문자열을 int형으로 바꿔주는 메서드이다.
기본 타입만으로 해당 로직을 만드려면 추가적인 작업이 필요하지만 Integer에서 제공되는 메서드를 이용하면 간단하게 바꿀 수 있다.

그러면 어떻게 기본타입에서 Wrapper클래스로 바꿀 수 있을까?

이를위해 자바5에 "오토 박싱", "오토 언박싱"이 도입되었다

오토 박싱(AutoBoxing)

기본 타입을 Wrapper클래스로 자동 변환해주는 것을 의미한다

int num = 10;
Integer obj = num; //오토박싱

위에서 Integer에 int에 대한 num을 할당 가능하다. 이를 오토박싱이라고 말한다

이를 통해 Wrapper클래스에서 제공하는 메서드나 추가 작업을 하기에 용이해진다

오토 언박싱(AutoUnboxing)

Wrapper클래스를 기본 타입으로 변환해주는 것을 의미한다

Integer obj = new Integer(10);
int num = obj //오토언박싱

오토 박싱과 비슷하게 반대로도 똑같이 제공해준다

성능

이 기능은 아주 편리한 기능이다. 하지만 추가 연산이 필요한 작업니다.
그렇기때문에 오토 박싱, 오토 언박싱을 자주 사용하면 성능에 영향을 미치게 된다.

따라서 오토 박싱, 오토 언박싱이 일어나지 않게 최대한 동일한 타입 연산이 이루어지도록 구현하자

profile
안녕하세요

0개의 댓글