hayu's 개발 일지

[TIL]240416 wrapper 클래스 본문

기술/java

[TIL]240416 wrapper 클래스

hayu00 2024. 4. 16. 21:05

wrapper 클래스

  • 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다.
  • 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 기본 자료 타입을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다.
  • 자바는 모든 기본타입은 값을 갖는 객체 생성이 가능하다. 이런 객체를 포장 객체라고도 하는데 기본 타입의 값을 내부에 두고 포장하기 때문이다. 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. 값을 변경하고 싶다면 새로운 포장 객체를 만들 수 있다.

래퍼 클래스 종류

기본타입(primitive type)  래퍼클래스(wrapper class)
byte Byte
char Character
int Integer
float Float
double Double
boolean Boolean
long Long
short Short

래퍼 클래스의 특징

변수가 객체가 되기 때문에 다양한 메소드를 활용할 수 있다.

  • 매개변수로 객체가 요구될 때
  • 기본형 값이 아닌 객체로 저장해야 할 때
  • 객체간의 비교가 필요할 때(예. equals())

변수같지만 객체이기 때문에 데이터의 활용을 위해 다시 자료형으로 되돌려야 한다.

→ 자료형 변수를 래퍼클래스로 바꾸는 과정을 박싱(boxing), 래퍼 클래스를 변수로 바꾸는 과정을 언박싱(unboxing)이라고 한다.

 

기본 타입과 래퍼 클래스 비교

Wrapper 클래스 사용 이유

  • 객체로 변환할 때 사용한다.

→ 기본 데이터 타입을 객체로 변환하여 다양한 객체 지향 가능을 사용할 수 있다.

  • Null 값 처리할 때 사용한다.

→ null 값을 사용할 수 있어 데이터의 존재 여부를 표현할 수 있다.

  • Collection 사용할 때 사용한다.

→ 컬렉션 프레임워크에서는 객체만을 저장할 수 있기 때문에 래퍼 클래스를 사용하여 기본 데이터 타입을 저장한다.

  • 메서드를 호출할 때 사용한다.

→ 기본 데이터 타입에 대한 메소드를 호출할 때 래퍼 클래스로 호출한다.

 

래퍼 클래스 구조도

박싱(Boxing)과 언박싱(UnBoxing)

박싱(Boxing)

기본 타입의 데이터를 래퍼 클래스 인스턴스로 변환하는 과정

오토박싱(Autoboxing) : 박싱이 자동으로 이루어진 것을 말한다.

언박싱(UnBoxing)

래퍼 클래스 인스턴스의 값을 기본 타입의 데이터로 꺼내는 과정

오토언박싱(Autounboxing) : 언박싱이 자동으로 이루어진 것을 말한다.

// 박싱
Integer num = new Integer(14); // Integer 래퍼 클래스 num 에 14 의 값을 저장
// 오토 박싱
Integer num = 14;

// 언박싱 (intValue)
int n = num.intValue(); // 래퍼 클래스 num 의 값을 꺼내 가져온다.
// 오토 언박싱
int n = num;

// 재 포장(박싱)
n = n + 100; // 114
num = new Integer(n);

 

참고 자료

- https://coding-factory.tistory.com/547

- https://inpa.tistory.com/entry/JAVA-%E2%98%95-wrapper-class-Boxing-UnBoxing

- https://javabeater.tistory.com/29

- https://medium.com/@s23051/%EB%9E%98%ED%8D%BC-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%9E%80-wrapper-class-cc5aa6f7cdd1

'기술 > java' 카테고리의 다른 글

[TIL]240424 JAVA ==과 equals() 차이  (0) 2024.04.24
[TIL]240417 열거형(enum)  (0) 2024.04.17
[TIL]240410 JAVA Collection  (0) 2024.04.10
[TIL]240408 Scanner 클래스  (1) 2024.04.08
[TIL]240406 Set  (0) 2024.04.06