객체지향 개념에서는 모든게 객체지만, 자바에서는 8개의 원시타입은 객체가 아니다

그래서 원시타입이 객체로 변경할 때 필요한게 wrapper 클래스

Untitled

8개의 기본형과 각 기본형을 객체로 변환시킬 8개의 래퍼클래스가 있음

public static void main(String[] args) {
	  Integer i = new Integer(100);       // Integer 객체 생성되어 메모리 추가 사용
	  Integer i2 = Integer.valueOf(100);      // 컴파일러가 wrapper 클래스로 반환해줌, 권장되는 방식
	  Integer i3 = Integer.valueOf(10);
	
	  System.out.println("i == i2: " + (i == i2));                    // false
	  System.out.println("i.equals(i2): " + (i.equals(i2)));          // true
	  System.out.println("i.compareTo(i2): " + (i.compareTo(i2)));    // 같음: 0
	  System.out.println("i.compareTo(i3): " + (i.compareTo(i3)));    // i보다 비교하는 값(i3) 보다 더 크면 1
	  System.out.println("i.toString(): " + i.toString());            // 100
}

equls()

compareTo()

toString()

오토박싱과 언박싱

JDK1.5 이전에는 기본형과 참조형 간의 연산X

→ 래퍼클래스로 기본형을 객체로 만든 후 연산했어야 했음

그러나 이제는 컴파일러가 자동으로 래퍼클래스를 기본형으로 언박싱해줌

// 원본 코드
int i = 5;
Integer obj = new Integer(7);

int sum = i + obj;

// 컴파일 후의 코드
int i = 5;
Integer obj = new Integer(7);

int sum = i + obj.intValue(); // 래퍼클래스를 기본형으로 언박싱