기본 타입과 박싱된 기본 타입의 주된차이
기본 타입 | 박싱된 기본 타입 |
값만 갖고 있음 | 값에 더해 식별성(identity)이란 속성을 가짐 |
값이 언제나 유효함 | 값이 유효하지 않은 값, null을 가질 수 있음 |
시간과 메모리 사용면에서 더 효율적임 | ㅤ |
박싱된 기본 타입에서 발생할 수 있는 오류
Comparator<Integer> naturalOrder = (i, j) -> (i < j) ? -1 : (i == j ? 0 : 1);
- 박싱된 기본 타입에 == 연산자를 사용하면 오류가 일어남
- 또한 박싱된 기본 타입은 언박싱 과정에서
NullPointerException
을 발생시킬 수 있음
박싱된 기본 타입을 사용해야 할 때
- 컬렉션의 원소, 키 값으로 사용
- 매개변수화 타입이나 매개변수화 메서드의 타입 매개변수로는 박싱된 기본 타입을 써야 함
- 자바 언어가 타입 매개변수로 기본 타입을 지원하지 않기 때문에
- 리플렉션을 통해 메서드를 호출할 때도 박싱된 기본 타입을 사용해야 함.