백엔드/Java

자바의 래퍼(wrapper) 클래스

개발자K씨 2023. 12. 22. 19:40

자바의 래퍼 클래스(wrapper class)는 기본 자료형(primitive data types)을 객체로 다루기 위해 사용되는 클래스입니다. 자바는 기본적으로 객체 지향 언어이지만, 성능 향상을 위해 여덟 가지 기본 자료형을 제공합니다: byte, short, int, long, float, double, char, boolean. 이 기본 자료형은 객체가 아니라서 객체 지향적인 기능을 직접 사용할 수 없습니다. 이를 보완하기 위해 각 기본 자료형에 해당하는 래퍼 클래스가 제공됩니다

 

래퍼 클래스의 종류

  • Byte (for byte)
  • Short (for short)
  • Integer (for int)
  • Long (for long)
  • Float (for float)
  • Double (for double)
  • Character (for char)
  • Boolean (for boolean)

래퍼 클래스의 사용 목적과 중요성

  1. 객체로의 변환(박싱, Boxing): 기본 자료형을 해당하는 래퍼 클래스의 객체로 변환할 수 있습니다. 이를 박싱(Boxing)이라고 합니다. 예를 들어, int 값을 Integer 객체로 변환할 수 있습니다.
  2. 객체에서 기본 자료형으로의 변환(언박싱, Unboxing): 래퍼 클래스의 객체를 다시 기본 자료형으로 변환할 수 있습니다. 이를 언박싱(Unboxing)이라고 합니다.
  3. 컬렉션 프레임워크 사용: 자바의 컬렉션 프레임워크(예: ArrayList, HashMap)는 객체만 저장할 수 있습니다. 따라서 기본 자료형 데이터를 컬렉션에 저장하려면 해당 래퍼 클래스를 사용해야 합니다.
  4. 유틸리티 메서드 제공: 래퍼 클래스는 기본 자료형과 관련된 다양한 유틸리티 메서드를 제공합니다. 예를 들어, Integer 클래스는 정수를 문자열로 변환하거나, 문자열을 정수로 파싱하는 메서드를 제공합니다.
  5. 널 값(Null) 사용: 기본 자료형은 널 값을 가질 수 없습니다. 반면, 래퍼 클래스를 사용하면 널 값을 가질 수 있는 객체를 생성할 수 있으므로, 데이터가 '없음'을 표현할 필요가 있을 때 유용합니다.

오토박싱 (Auto-boxing)

오토박싱은 기본 자료형의 값을 해당하는 래퍼 클래스의 객체로 자동 변환하는 과정입니다. 예를 들어, int 자료형의 값을 Integer 객체로 자동 변환하는 것입니다. 이 과정은 개발자가 직접 래퍼 클래스의 생성자를 호출하거나 valueOf 메서드를 사용하지 않아도 자동으로 이루어집니다.

 

예시:

Integer myInteger;
int myInt = 5;

// 오토박싱
myInteger = myInt; // 'int'가 'Integer'로 자동 변환됨

오토언박싱 (Auto-unboxing)

오토언박싱은 래퍼 클래스의 객체를 해당하는 기본 자료형의 값으로 자동 변환하는 과정입니다. 예를 들어, Integer 객체를 int 값으로 자동 변환하는 것입니다. 이 과정은 개발자가 래퍼 객체에서 값을 추출하기 위해 명시적으로 메서드를 호출하지 않아도 자동으로 이루어집니다.

 

예시:

Integer myInteger = new Integer(5);
int myInt;

// 오토언박싱
myInt = myInteger; // 'Integer' 객체가 'int' 값으로 자동 변환됨

 

중요성과 주의사항

  1. 코드 간소화: 오토박싱과 오토언박싱은 코드를 더 간결하고 읽기 쉽게 만듭니다.
  2. 성능 고려: 오토박싱과 오토언박싱 과정에서는 약간의 성능 오버헤드가 발생할 수 있습니다. 따라서 성능에 민감한 애플리케이션에서는 이를 고려해야 합니다.
  3. 널 값 주의: 오토언박싱을 사용할 때 래퍼 객체가 null인 경우 NullPointerException이 발생할 수 있습니다. 따라서 널 체크를 적절히 수행하는 것이 중요합니다.
  4. 복잡한 연산 주의: 때때로 오토박싱과 오토언박싱이 복잡한 연산에서 의도치 않은 결과를 초래할 수 있으므로, 이러한 상황에서는 변환 과정을 명확히 이해하고 있어야 합니다.

오토박싱과 오토언박싱은 자바의 객체 지향적 특성을 유지하면서 기본 자료형과 객체 간의 작업을 용이하게 해주는 유용한 기능입니다.