본문 바로가기
백엔드/Java

자바의 래퍼(wrapper) 클래스

by 개발자K씨 2023. 12. 22.

자바의 래퍼 클래스(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. 복잡한 연산 주의: 때때로 오토박싱과 오토언박싱이 복잡한 연산에서 의도치 않은 결과를 초래할 수 있으므로, 이러한 상황에서는 변환 과정을 명확히 이해하고 있어야 합니다.

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

'백엔드 > Java' 카테고리의 다른 글

ExecutorService  (0) 2023.12.27
[lombok]@Data 주의사항  (0) 2023.12.26
lombok  (0) 2023.12.26
실수 계산이 정확하지 않은 이유  (2) 2023.12.23
자바의 기본 자료형과 참조 자료형  (0) 2023.12.22