Java의 래퍼 객체는 기본 데이터 유형과 객체 사이에 중요한 연결을 제공합니다. 그러나 정수 값의 박싱에서 특이한 동작이 관찰되었습니다. 인스턴스는 -128에서 127 사이에서만 공유되는 것으로 보입니다.
다음 코드를 고려하세요.
Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2); // outputs "true"
이 경우 ==와 비교할 때 "true"가 출력되는 것으로 알 수 있듯이 정수1과 정수2에는 동일한 인스턴스가 할당됩니다. 그러나 값이 이 범위를 초과하면 다른 동작이 나타납니다.
Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1 == integer2); // outputs "false"
이러한 현상은 왜 발생합니까?
JLS(Java 언어 사양)에 따르면 다음과 같이 구체적으로 명시되어 있습니다. "특정 공통 가치는 항상 구별할 수 없는 개체로 분류됩니다." 이 범위는 "u0000~u007f 범위의 바이트 또는 문자, 또는 -128~127(포함) 사이의 int 또는 짧은 숫자"로 정의됩니다.
이 동작에 대한 정당성은 다음 항목에 설명되어 있습니다. JLS는 "가장 일반적인 경우 특히 소형 장치에서 과도한 성능 저하를 초래하지 않고 원하는 동작이 되도록 보장"하는 것입니다. 공유 인스턴스 동작을 공통 값 범위로 제한함으로써 Java는 성능과 예상 동작 간의 균형을 유지합니다.
위 내용은 Java의 정수 래퍼 개체가 -128과 127 사이에서만 공유되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!