> Java > java지도 시간 > Java 프로그래밍 예제 질문 분석

Java 프로그래밍 예제 질문 분석

WBOY
풀어 주다: 2023-04-24 19:07:05
앞으로
1021명이 탐색했습니다.

질문 1:

<code>public static void demo01() {<br>    Integer f1 = 100, f2 = 100, f3 = 200, f4 = 200;<br>    System.out.println(f1 == f2);<br>    System.out.println(f3 == f4);<br>}</code>
로그인 후 복사

질문 2:

<code>private static Integer i;<br>public static void demo02() {<br>    if (i == 0) {<br>        System.out.println("A");<br>    } else {<br>        System.out.println("B");<br>    }<br>}</code>
로그인 후 복사

질문 1 답변:

true

false

질문 2 답변:

NullPointerException

분석:

질문 1:

다음은 Integer 클래스의 "autoboxing" 소스 코드입니다.

<code>public static Integer valueOf(int i) {<br>    if (i >= IntegerCache.low && i <= IntegerCache.high)<br>        return IntegerCache.cache[i + (-IntegerCache.low)];<br>    return new Integer(i);<br>}<br></code>
로그인 후 복사

IntegerCache.low의 값은 -128이고 IntegerCache.high의 값은 127입니다. 즉, Integer가 자동으로 박싱될 때 정수 값의 범위가 [-128,127] 사이로 판단되면 정수 상수 풀에 있는 값이 이 범위에 없으면 새로운 Integer가 사용됩니다. ()가 생성됩니다. 따라서 이 질문의 f1과 f2는 모두 [-128,127] 범위에 있으며 상수 풀에서 동일한 값을 사용합니다. 그러나 f3과 f4는 [-128,127] 범위에 있지 않고, 그 값도 모두 새로운 것이므로 f3과 f4는 동일한 객체가 아닙니다.

질문 2:

Integer i의 기본값은 null입니다. i==0이 실행되면 등호 오른쪽이 숫자이므로 비교 연산을 수행하기 위해 Integer가 자동으로 unboxing됩니다(즉, Integer가 int 유형으로 변환됩니다). 분명히 null을 unbox하면(null을 숫자로 변환) NullPointerException이 보고됩니다.

위 내용은 Java 프로그래밍 예제 질문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿