更新時間:2020-05-19 16:13:28 來源:動力節點 瀏覽2282次
Java設計當初就提供了8種基本數據類型及對應的8種包裝數據類型。我們知道Java是一種面向對象編程的高級語言,所以包裝類型正是為了解決基本數據類型無法面向對象編程所提供的。
下面是基本數據類型與對應的包裝類型。
下面是包裝類型的繼承結構圖。
從以上圖表可以對基本類型和包裝類型有一個全面的了解。
1.集合類泛型只能是包裝類;
//編譯報錯
Listlist1=newArrayList<>();
//正常
Listlist2=newArrayList<>();
2.成員變量不能有默認值;
privateintstatus;
基本數據類型的成員變量都有默認值,如以上代碼status默認值為0,如果定義中0代表失敗,那樣就會有問題,這樣只能使用包裝類Integer,它的默認值為null,所以就不會有默認值影響。
3.方法參數允許定義空值;
privatestaticvoidtest1(intstatus){
System.out.println(status);
}
看以上代碼,方法參數定義的是基本數據類型int,所以必須得傳一個數字過來,不能傳null,很多場合我們希望是能傳遞null的,所以這種場合用包裝類比較合適。
還有更多應用場景就不一一例舉了,歡迎留言共同探討包裝類的更多的應用場景。
Java5增加了自動裝箱、拆箱機制,提供基本數據類型和包裝類型的相互轉換操作。
自動裝箱
自動裝箱即自動將基本數據類型轉換成包裝類型,在Java5之前,要將基本數據類型轉換成包裝類型只能這樣做,看下面的代碼。
Integeri1=newInteger(8);
Integeri2=Integer.valueOf(8);
//自動裝箱
Integeri3=8;
以上3種都可以進行轉換,但在Java5之前第3種方法是編譯失敗的,第3種方法也正是現在的自動裝箱功能。另外,第一種構造器方法也不推薦使用了,已經標為廢棄了。
其實自動裝箱的原理就是調用包裝類的valueOf方法,如第2個方法中的Integer.valueOf方法。
自動拆箱
自動拆箱即自動將包裝類型轉換成基本數據類型,與自動裝箱相反,有裝就有拆,很好理解。
//自動拆箱
inti4=i3;
inti5=i3.intValue();
繼續上面的例子,把i3賦值給i4就是實現的自動拆箱功能,自動裝箱的原理就是調用包裝類的xxValue方法,如i5中的Integer的intValue方法。
自動裝箱、拆箱不只是體現在以上的例子,在方法接收參數、對象設置參數時都能自動裝箱拆箱。
需要注意的是,關于Integer,-128~127會有緩存,對比這個范圍的值的對象是一個坑,這個在阿里巴巴規范中也有提及。
以上就是動力節點java培訓機構的小編針對“夯實基礎:Java數據類型的包裝類”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習