Java에서 수수께끼의 Integer Boxing 공개
문제의 Java 코드 조각은 흥미로운 질문을 제기합니다. 두 Integer 객체를 동등한 객체와 비교하는 이유는 무엇입니까? 값이 다른 결과를 낳는다고요?
큰 정수
127보다 큰 정수를 나타내는 두 개의 Integer 객체를 비교할 때 참조 비교를 통해 동등성을 결정하고 결과는 false입니다. 이는 메모리에서 별도의 개체이기 때문에 이러한 개체의 고유한 특성에서 비롯됩니다.
작은 정수 뒤에 숨은 진실
그러나 더 작은 정수를 다룰 때는 다른 행동이 나타납니다. Java 언어 사양에 따르면 -128에서 127 사이의 정수 값은 동일한 객체로 묶이는 것이 보장됩니다. 이러한 값을 나타내는 박스형 객체는 같음 연산자(==)를 사용하여 지속적으로 true로 비교됩니다.
구별의 근거
이 구별은 다음과 같은 실용적인 절충안입니다. 성능과 일관성 사이의 균형. 일반적으로 사용되는 값을 캐싱하면 효율적으로 재사용할 수 있으며 더 복잡한 값에 대한 개체 ID에 대한 가정을 방지할 수 있습니다. 대부분의 경우 성능을 저해하지 않고 원하는 동작을 보장합니다.
결론
정수 동등 비교의 겉보기에 역설적인 동작은 Java 박싱 메커니즘의 기본 구현에서 비롯됩니다. 큰 정수는 고유한 ID를 유지하지만 작은 정수는 캐시된 객체의 이점을 활용하여 일관된 동등성을 보장합니다.
위 내용은 값이 동일한 경우에도 Java의 정수 비교가 때때로 False를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!