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

WBOY
リリース: 2023-04-24 19:07:05
転載
997 人が閲覧しました

質問 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート