박싱된 기본 타입 사용시 주의점
1. 박싱된 기본 타입은 식별성을 갖고 있습니다.
public static void main(String[] args) {
System.out.println(new Integer(42) == new Integer(42));
System.out.println(42 == 42);
}
Output
false
true
박싱된 기본 타입은 식별성을 가지므로 ==연산자
비교시 레퍼런스를 비교합니다.
2. 박싱된 기본 타입은 null일 수 있습니다.
static Integer i;
public static void main(String[] args) {
if (i == 42) {
System.out.println("hi");
}
}
i == 42
를 검사할 때 NullPointerException
을 던집니다. i의 초기값은 null인데 int와 비교하기 위해 언박싱을 하려니 NullPointerException
이 발생합니다.
3. 성능에 영향을 줍니다.
public static void main(String[] args) {
Long sum = 0L;
for (long i = 0; i <= Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println("sum = " + sum);
}
박싱된 기본 타입을 사용해야할 경우
- 컬렉션의 원소, 키, 값으로 사용하는 경우
- 리플렉션을 통해 메서드를 호출하는 경우
반응형