您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java實例題目分析”,在日常操作中,相信很多人在Java實例題目分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java實例題目分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
題目1:
public static void demo01() {
Integer f1 = 100, f2 = 100, f3 = 200, f4 = 200;
System.out.println(f1 == f2);
System.out.println(f3 == f4);
}
題目2:
private static Integer i;
public static void demo02() {
if (i == 0) {
System.out.println("A");
} else {
System.out.println("B");
}
}
題目1答案:
true
false
題目2答案:
NullPointerException
解析:
題目1:
以下是Integer類中“自動裝箱”的源碼:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
其中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實例題目分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。