Java의 정수 캐싱: 최적화 이해
최근 관찰 결과 Java에서 Integer 개체의 동작과 관련하여 혼란이 야기되었습니다. 코드 예제에서는 항등 연산자가 1000과 같은 두 정수 인스턴스에 대해 "false"를 반환하지만 100과 같은 두 인스턴스에 대해 "true"를 반환한다는 것을 보여줍니다.
이 역설처럼 보이는 것은 Java의 정수 캐싱 메커니즘에서 비롯됩니다. 성능을 최적화하고 메모리 공간을 줄이기 위해 JVM(Java Virtual Machine)은 -128에서 127 사이의 값에 대해 Integer 객체를 캐시합니다. 즉, 이 범위 내의 Integer 인스턴스에 대한 참조는 항상 동일합니다.
따라서 Integer 인스턴스가 값 100을 나타내는 두 번째 코드 조각에서는 "c"와 "d"가 모두 동일한 캐시된 개체를 가리키므로 동일성을 비교할 때 "true"가 됩니다. 그러나 1000과 같이 이 범위를 벗어나는 값의 경우 다른 Integer 개체가 생성되므로 "거짓" 비교 결과가 발생합니다.
이 최적화는 메모리 사용량을 줄여 성능에 영향을 미치고 캐시 활용을 더욱 효율적으로 만듭니다. 또한 자주 사용되는 정수에 대해 새 객체를 생성하는 오버헤드를 제거하여 코드 실행 속도를 높입니다.
이 주제에 대한 추가 연구는 다음 리소스에서 찾을 수 있습니다.
위 내용은 Java에서 '정수' 동일성이 때때로 'false'를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!