카테고리 없음

[Effective Java] Item61. 박싱된 기본 타입보다는 기본 타입을 사용하라

📝 작성 : 2022.08.14  ⏱ 수정 : 

박싱된 기본 타입 사용시 주의점

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);
}

박싱된 기본 타입을 사용해야할 경우

  • 컬렉션의 원소, 키, 값으로 사용하는 경우
  • 리플렉션을 통해 메서드를 호출하는 경우
반응형