개발하는 자몽

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

Java & Kotlin

[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