Java/일반

Wrapper Class

창욱씨 2020. 3. 28. 00:03

Wrapper Class란

Wrapper Class의 개념

Java는 데이터를 클래스나 객체 외에 int, double, char과 같은 Primitive Type을 가지고 있습니다. 따라서 Java는 Primitive Type과 객체 인스턴스 같은 두 가지 타입의 데이터를 가지고 있습니다. 그러나 어떤 상황에서는 기본형 타입을 객체로 사용해야 하는 경우가 있습니다. 이러한 경우에 기본형 타입 값을 객체로 포장할 수 있습니다. 이 때 사용하는 클래스가 Wrapper Class입니다.
Wrapper Class는 특정 기본형 타입을 나타냅니다. 예를 들어, Integer Class는 정수 값을 나타내고 Double Class는 실수 값을 나타냅니다. 각 Wrapper Class로부터 생성된 객체는 하나의 Primitive Type 값을 저장할 수 있씁니다.

Boxing과 UnBoxing

Wrapper Class는 산술연산을 위해 정의된 클래스가 아니기 때문에, 이 클래스의 객체 인스턴스에 저장된 값을 변경이 불가능하며 값을 저장하는 새로운 객체의 생성 및 참조만 가능합니다.

  • Boxing: Primitive Type을 Wrapper Class의 객체로 변경하는 과정
  • UnBoxing: Wrapper Class를 Primitive Type으로 변경하여 사용하는 과정

Wrapper Class와 Primitive Type의 차이

  • Primitive Type은 null을 지원하지 않지만 Wrapper Class는 null을 지원한다는 점을 주의
  • Wrapper Class는 객체이기 때문에 값을 비교할 때 equals나 Value를 가져와서 비교해 Primitive Type보다 비용이 더 많이 들어감
  • Wrapper Class는 참조형 타입이기 때문에 값을 사용할 때마다 메모리에서 값을 찾아 가져와야 합니다. 반면에 Primitive Type은 변수 자체에 값이 포함되어 있기 때문에 메모리에 접근할 필요가 없습니다.
  • Wrapper Class는 JVM의 힙 영역에 저장됩니다. 반면에 Primitive Type은 단지 ‘값’이기 때문에 스택 영역에 들어갑니다. Wrapper Class에 포함된 Primitive의 경우 Stack에 있는 값과 Wrapper 객체에 대한 참조가 둘 다 필요합니다.
728x90