자바의 데이터 타입
- 기본 타입 - int, double, boolean
- 참조 타입 - String, List
- 박싱된 기본 타입 - Integer, Double, Boolean
기본 타입과 박싱된 기본 타입의 주된 차이
- 기본 타입은 값만 가지고 있지만 박싱된 기본 타입은 값과 식별성(identity)을 가진다.
- 박싱된 기본 타입의 두 인스턴스는 같은 값이어도 서로 다르다고 식별 불가능
- 기본 타입의 값은 언제나 유효, 박싱된 기본 타입은 null 가질 수 있다.
- 기본 타입이 박싱된 기본 타입보다 시간과 메모리 사용면에서 더 효율적이다.
비교자 구현
new Integer()
책 코드에서 사용된 new Integer()는 deprecated됨

new Integer를 사용해 새로운 박싱된 기본 타입 객체 생성, 이를 비교하면 1을 출력한다.
- naturalOrder의 첫 번째 검사 (i<j)는 잘 작동한다.
- 이때 i, j가 참조하는 오토박싱된 Integer 인스턴스는 기본 타입 값으로 변환됨
- 첫 번째 정수값이 두 번째 값보다 작은지 평가하고 작지 않다면 (i==j)가 이뤄진다.
- 이때 두 객체 참조의 식별성 검사 → 서로 다른 인스턴스기 때문에 값이 같아도 결과는 false가 되고 비교자는 1 반환
→ 박싱된 기본 타입에 == 연산자 사용하면 오류 일어남