更新時間:2020-05-19 16:13:28 來源:動力節(jié)點 瀏覽2362次
Java設計當初就提供了8種基本數(shù)據(jù)類型及對應的8種包裝數(shù)據(jù)類型。我們知道Java是一種面向?qū)ο缶幊痰母呒壵Z言,所以包裝類型正是為了解決基本數(shù)據(jù)類型無法面向?qū)ο缶幊趟峁┑摹?/p>
下面是基本數(shù)據(jù)類型與對應的包裝類型。
下面是包裝類型的繼承結(jié)構(gòu)圖。
從以上圖表可以對基本類型和包裝類型有一個全面的了解。
1.集合類泛型只能是包裝類;
//編譯報錯
Listlist1=newArrayList<>();
//正常
Listlist2=newArrayList<>();
2.成員變量不能有默認值;
privateintstatus;
基本數(shù)據(jù)類型的成員變量都有默認值,如以上代碼status默認值為0,如果定義中0代表失敗,那樣就會有問題,這樣只能使用包裝類Integer,它的默認值為null,所以就不會有默認值影響。
3.方法參數(shù)允許定義空值;
privatestaticvoidtest1(intstatus){
System.out.println(status);
}
看以上代碼,方法參數(shù)定義的是基本數(shù)據(jù)類型int,所以必須得傳一個數(shù)字過來,不能傳null,很多場合我們希望是能傳遞null的,所以這種場合用包裝類比較合適。
還有更多應用場景就不一一例舉了,歡迎留言共同探討包裝類的更多的應用場景。
Java5增加了自動裝箱、拆箱機制,提供基本數(shù)據(jù)類型和包裝類型的相互轉(zhuǎn)換操作。
自動裝箱
自動裝箱即自動將基本數(shù)據(jù)類型轉(zhuǎn)換成包裝類型,在Java5之前,要將基本數(shù)據(jù)類型轉(zhuǎn)換成包裝類型只能這樣做,看下面的代碼。
Integeri1=newInteger(8);
Integeri2=Integer.valueOf(8);
//自動裝箱
Integeri3=8;
以上3種都可以進行轉(zhuǎn)換,但在Java5之前第3種方法是編譯失敗的,第3種方法也正是現(xiàn)在的自動裝箱功能。另外,第一種構(gòu)造器方法也不推薦使用了,已經(jīng)標為廢棄了。
其實自動裝箱的原理就是調(diào)用包裝類的valueOf方法,如第2個方法中的Integer.valueOf方法。
自動拆箱
自動拆箱即自動將包裝類型轉(zhuǎn)換成基本數(shù)據(jù)類型,與自動裝箱相反,有裝就有拆,很好理解。
//自動拆箱
inti4=i3;
inti5=i3.intValue();
繼續(xù)上面的例子,把i3賦值給i4就是實現(xiàn)的自動拆箱功能,自動裝箱的原理就是調(diào)用包裝類的xxValue方法,如i5中的Integer的intValue方法。
自動裝箱、拆箱不只是體現(xiàn)在以上的例子,在方法接收參數(shù)、對象設置參數(shù)時都能自動裝箱拆箱。
需要注意的是,關(guān)于Integer,-128~127會有緩存,對比這個范圍的值的對象是一個坑,這個在阿里巴巴規(guī)范中也有提及。
以上就是動力節(jié)點java培訓機構(gòu)的小編針對“夯實基礎(chǔ):Java數(shù)據(jù)類型的包裝類”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。