1.
在jdk1.5之後,下列 java 程序輸出結果爲______。
1 2 3 4 |
|
**自動拆箱考題 * 1.基本類型和基本封裝類型 * * Created by zengjx on 2019/2/17. */ public class NIuke { public void Test(){ int i=0;//基本數據類型 Integer j=new Integer(0);// System.out.println(i==j);//true// 基本型封裝型將會自動拆箱變爲基本型後再進行比較 System.out.println(j.equals(i));//true } }
評論精華:
1、基本型和基本型封裝型進行“==”運算符的比較,基本型封裝型將會自動拆箱變爲基本型後再進行比較,因此Integer(0)會自動拆箱爲int類型再進行比較,顯然返回true;
2、兩個Integer類型進行“==”比較,如果其值在-128至127,那麼返回true,否則返回false, 這跟Integer.valueOf()的緩衝對象有關,這裏不進行贅述。
3、兩個基本型的封裝型進行equals()比較,首先equals()會比較類型,如果類型相同,則繼續比較值,如果值也相同,返回true
4、基本型封裝類型調用equals(),但是參數是基本類型,這時候,先會進行自動裝箱,基本型轉換爲其封裝類型,再進行3中的比較。
int a=257;
Integer b=257;
Integer c=257;
Integer b2=57;
Integer c2=57;
System.out.println(a==b);
//System.out.println(a.equals(b)); 編譯出錯,基本型不能調用equals()
System.out.println(b.equals(257.0));
System.out.println(b==c);
System.out.println(b2==c2);
因此上面的代碼的結果因此爲 true, false, false, true
2. 考點 創建派生類執行順序:
鏈接:https://www.nowcoder.com/questionTerminal/6f126682f29544708bb73a08e4e2bd0a
來源:牛客網
類的初始化過程也就是方法執行的過程
父類的靜態變量
-父類的靜態代碼塊
子類的靜態變量-子類的靜態代碼塊 父類的非靜態變量-父類的非靜態代碼塊-父類的構造函數 子類的非靜態變量-子類的非靜態代碼塊-子類的構造函數
規律就是 父類先於子類 靜態的先於非靜態的 變量先於代碼塊