ホームページ >Java >&#&チュートリアル >Java プログラミングの例題の分析

Java プログラミングの例題の分析

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB転載
2023-04-24 19:07:051039ブラウズ

質問 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 クラスの「オートボクシング」のソース コードです:

<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:

整数 i のデフォルト値は null です。 i==0 を実行すると、等号の右側が数値となるため、比較演算を行うために、Integer が自動的にアンボックス化されます (つまり、Integer が int 型に変換されます)。明らかに、null のボックス化を解除すると (null を数値に変換すると)、NullPointerException が報告されます。

以上がJava プログラミングの例題の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。