[Java] Wrapper 클래스와 Boxing & UnBoxing

해니·2024년 5월 21일
0

Java

목록 보기
16/34
post-thumbnail



래퍼 클래스 (Wrapper Class)

  • 원시 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들
  • 기본타입을 객체 형태로 '포장'하는 것을 의미한다. (포장 객체)
  • 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다.
    • 별다른 패키지 불러오기 없이 곧바로 소스 단에서 사용이 가능하다.
Integer num1 = new Integer(5); // 기본형 타입 정수를 래퍼 클래스로 감싸 객체화
Integer num1 = 5; // 이런식으로도 표현 가능

Double num2 = new Double(1.11); // 기본형 타입 실수를 래퍼 클래스로 감싸 객체화
Double num2 = 1.11;

원시 타입(Primitive Type)

  • 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입
  • boolean, char, byte, int

참조타입(Reference Type)

  • 원시 타입을 제외한 모든 타입들(문자열, 배열, 열거, 클래스, 인터페이스)
  • Java에서 실제 객체는 힙 영역에 저장되며, 참조 타입 변수는 스택 영역실제 객체들의 주소를 저장하여, 객체를 사용할때 마다 참조 변수에 저장된 객체의 주소를 불러와 사용하는 방식이다.



원시 타입과 참조 타입 차이

  • Null 포함 가능 여부
    • 원시타입은 null을 담을 수 없지만, 참조 타입은 가능하다.
  • 제너릭 타입에서 사용 가능 여부
    • 원시타입은 제너릭 타입에서 사용할 수 없지만, 참조 타입은 가능하다.
// 불가능
int i = null;
List<i> list;

// 가능
Integer integer = null; 
List<Integer> list;



Boxing(박싱) vs Unboxing(언박싱)

  • Boxing: 기본 타입에서 wrapper 클래스로 전환
  • Unboxing: wrapper 클래스 객체를 기본 타입으로 전환
Integer wrapper = new Integer(2); // boxing
int primitive = wrapper.intValue(); // unboxing



자동 박싱(AutoBoxing) & 자동 언박싱(AutoUnBoxing)

  • JDK 1.5 부터는 박싱과 언박싱이 필요한 상황에 자바 컴파일러가 자동으로 처리해주기 시작했다.






출처
자바 Wrapper 클래스와 Boxing & UnBoxing 총정리
[Java] Wrapper Class(래퍼 클래스)
원시타입, 참조타입(Primitive Type, Reference Type)


profile
💻 ⚾️ 🐻

0개의 댓글