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)` 사용하게 된다 :)