Skip to content

Latest commit

 

History

History
66 lines (53 loc) · 2.26 KB

wrapper-class.md

File metadata and controls

66 lines (53 loc) · 2.26 KB

Wrapper class

왜 사용할까?

  • 객체지향 프로그래밍에서 모든 것은 객체로 다루어져야 한다.
  • 그렇지만, Java는 성능상의 이유로 8개의 기본형(Primitive Type)을 객체로 다루지 않는다.

하지만 매개변수로 객체가 필요하거나, 기본형 값 대신 객체로 저장해야 하거나, 객체 간 비교가 필요하는 등...
이럴 때 Wrapper class를 사용한다.

  • 대표적으로 Java의 Collection Framework에서는 Wrapper class를 사용한다.

Wrapper class란?

: 기본형(primitive type) 변수를 감싸거나(wrap), 포함하는(contain) class이다.

  • 기본형 값들을 객체로 다루는 일을 가능하게 해준다.
  • Wrapper class로 감싸고 있는 기본 타입 값은 외부에서 변경 할 수 없다.

    만약 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다. → 불변성을 가진다.

  • String형의 경우 기본 타입을 감싸거나 포함하는 class가 아니므로 wrapper class가 아니다.

Wrapper class의 종류

Primitive Type Wrapper Class
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean

Wrapper Class의 구조

  • wrapper class들은 모두 java.lang패키지에 포함되어 제공된다.
  • Number: 내부적으로 숫자를 다루는 wrapper class들의 부모 클래스

Boxing 과 UnBoxing

Boxing

: 기본 타입의 데이터를 wrapper class의 인스턴스로 변환하는 과정

Primitive type → Wrapper class instance

예제 코드

int intA = 1;
Integer integerA = new Integer(intA); // int형인 intA변수를 boxing했다. 

Unboxing

: wrapper class의 인스턴스에 저장된 값을 -> 기본 타입의 데이터로 꺼내는 과정

Wrapper class instance → Primitive type

예제 코드

Integer integerA = new Integer(1);
int intA = integerA.intValue();

AutoBoxing & AutoUnBoxing

JDK 1.5버전부터 boxing,unboxing이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해준다.

예시 코드

Integer inteagerA = 1;
int intA = 1;