박싱된 기본 타입(Integer, Double 등)보다는 기본 타입(int, double 등)을 사용해라.
in Development on Java
기본 타입 / 박싱된 기본 타입(포장 클래스, Wrapper Class)
되도록이면 ‘기본 타입’을 사용해라.
‘기본 타입’과 ‘박싱된 기본 타입’ 둘 다 사용할 수 있는 상황이라면 무조건 ‘기본 타입’을 사용해라. 기본 타입이 박싱된 기본 타입보다 시간과 메모리 사용면에서 더 효율적이다.
‘박싱된 기본 타입’을 쓸 수 밖에 없는 경우
1. 매개변수화 타입이나 매개변수화 메서드의 타입 매개변수를 사용할 때
컬렉션은 기본 타입을 담을 수 없으므로 어쩔 수 없이 박싱된 기본 타입을 써야만 한다.
ThreadLocal<int> // (x)
ThreadLocal<Integer> // (o)
List<int> list = new ArrayList<>(); // (x)
List<Integer> list = new ArrayList<>(); // (o)
2. 리플렉션을 통해 메서드를 호출할 때
‘박싱된 기본 타입’을 쓸 때 주의할 점
- 두 박싱된 기본 타입을
==
연산자로 비교한다면 식별성 비교가 이루어지는데, 값이 같다고 해서 true를 출력하지 않는 경우가 발생할 것이다. - 같은 연산에서 기본 타입과 박싱된 기본 탕입을 혼용하면 언박싱이 이뤄지며, 언박싱 과정에서 NullPointerException을 던질 수 있다.
- 기본 탕입을 박싱하는 작업은 필요 없는 객체를 생성하는 부작용을 나을 수 있다.
References
- Effective Java(이펙티브 자바) - 조슈아 블로크, 인사이트 → [아이템 60. 박싱된 기본 타입보다는 기본 타입을 사용하라.]