개발하는 자몽

[Java] new Integer와 Integer.valueOf()의 차이점 본문

Java

[Java] new Integer와 Integer.valueOf()의 차이점

jaamong 2024. 8. 11. 16:55

 

`new Integer(int)`는 새로운 객체 인스턴스를 매번 생성한다.

 

`Integer.valueOf(int)`은 지정된 `int` 값을 나타내는 `Integer` 인스턴스를 반환한다.

새로운 `Integer` 인스턴스가 필요한 경우가 아니라면, 일반적으로 생성자 `Integer(int)` 보다 해당 메서드를 우선적으로 사용하는 것이 메모리 측면에서 권장된다. 이는 자주 요청되는 값을 캐싱하여 더 나은 공간 및 시간 성능을 제공할 가능성이 높기 때문이다. 

 

다음은 예시 코드다.

public static void main(String[] args) {
    
    Integer a = new Integer(10);
    Integer b = new Integer(10);
    
    System.out.println("a==b : " + (a==b));
    
    Integer c = Integer.valueOf(10);
    Integer d = Integer.valueOf(10);
    
    System.out.println("c==d : " + (c==d));
}

 

결과는 아래와 같다.

a==b : false
c==d : true

 

 

 

강의를 듣다가 이야기가 나와서 한 번 알아보았다. 근데 `new Integer(int)` 이 생성자는 버전 9부터 deprecated 상태다. 따라서 해당 버전 이상을 사용할 경우 강제로 `Integer.valueOf(int)` 사용하게 된다 :)

 

 

 

Comments