首頁 >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類別中「自動裝箱」的原始碼:

<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]之間,則直接使用整數常數池中的值;如果不在此範圍,則會new 一個新的Integer() 。因此,本題f1和f2都在[-128,127]範圍內,使用的是常數池中同一個值。而f3和f4不在[-128,127]範圍內,二者的值都是new出來的,因此f3和f4不是同一個物件。

題目2:

Integer i 的預設值是null。執行 i==0 時,等號右側是數字,因此為了進行比較操作,Integer會進行自動拆箱(也就是將Integer轉為int型別)。很明顯,如果對null進行拆箱(將null轉為數字),就會報NullPointerException。

以上是Java 程式設計實例題目分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除