☕️ 김영한의 실전 자바 - 중급 1편 을 수강하며 학습한 내용을 저만의 언어로 정리하고 있습니다.
기본형(primitive type)을 객체로 사용할 수 있도록 하기 위해 존재하는 클래스이다.
Primitive type | Wrapper class |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
기본형을 객체로 바꿔줌으로써
객체지향적인 프로그래밍이 가능해진다.
null
상태를 표현할 수 있게 된다.
기본형을 Wrapper 클래스 객체로 만드는 것을 Boxing이라고 한다.
(Integer라는 박스에 int를 넣는다!)
Integer integer1 = new Integer(10); // Deperecated!!!
Integer integer2 = Integer.valueOf(10);
Integer integer3 = Integer.valueOf("10");
.valueOf()
를 이용해 Boxing하도록 한다.Byte, Short, Integer, Long, Character
의 .valueOf()
는 캐시를 이용해 성능 최적화를 가능하게 한다.new
연산자를 사용해 새로운 객체를 만들어 반환한다.Wrapper 클래스 객체였던 것을 다시 기본형으로 바꾸는 것을 Unboxing이라고 한다.
(Integer라는 박스에서 int를 꺼낸다!)
Integer integer1 = Integer.valueOf(10); // boxing
int int1 = integer1.intValue(); // unboxing
Boolean boolean1 = Boolean.valueOf(true); // boxing
boolean bool = boolean1.booleanValue(); // unboxing
.xxxValue()
를 이용해 Unboxing 할 수 있다.래퍼 클래스는 equals()
로 비교한다.
==
비교는 참조값을 비교하므로, 내부 값을 비교하기 위해서는 equals()
로 비교한다.equals()
가 재정의되어있다.개발 중 기본형과 래퍼 클래스간의 변환 과정이 잦기 때문에
자바 1.5 버전부터 Auto Boxing, Auto Unboxing이 가능하다.
int value = 10;
Integer boxed = value; // Auto Boxing
int uboxed = boxed; // Auto Unboxing
Integer integer = Integer.valueOf("100");
int i = Integer.parseInt("100");
valueOf(String s)
는 Wrapper 클래스 객체를 반환한다.valueOf(int i)
도 가능하다.parseInt(String s)
는 문자열 s
을 int
형으로 바꾼 것을 반환한다.