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

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

WBOY
WBOY앞으로
2023-04-24 19:07:051007검색

질문 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으로 문의하시기 바랍니다. 삭제