您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java之怎么正確地對(duì)包裝類(lèi)進(jìn)行裝箱與拆箱”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Java之怎么正確地對(duì)包裝類(lèi)進(jìn)行裝箱與拆箱”文章能幫助大家解決問(wèn)題。
所謂的裝箱(Boxing),其實(shí)就是將基本類(lèi)型轉(zhuǎn)換成包裝類(lèi),例如把double變成Double。裝箱分為手動(dòng)裝箱和自動(dòng)裝箱(Auto Boxing),如果我們手動(dòng)實(shí)例化一個(gè)包裝類(lèi),這就是手動(dòng)裝箱。在JDK 1.5之前,必須進(jìn)行手動(dòng)裝箱;JDK 1.5之后,可以進(jìn)行自動(dòng)裝箱,不用再進(jìn)行手工操作,這就簡(jiǎn)化了開(kāi)發(fā),提供了方便。
下面的案例是手動(dòng)裝箱和自動(dòng)裝箱的實(shí)現(xiàn)過(guò)程。在JDK 1.5前后,裝箱有手動(dòng)裝箱和自動(dòng)裝箱之分,大家要注意。
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆裝箱過(guò)程--手動(dòng)拆裝箱 byte b = 10; //手動(dòng)裝箱 Byte b1 = Byte.valueOf(b); System.out.println("手動(dòng)裝箱后的結(jié)果,b1="+b1); //手動(dòng)裝箱的另一種形式 int m = 100; Integer obj = new Integer(m); //手動(dòng)拆箱的另一種形式 int n = obj.intValue(); System.out.println("n = " + n); //JDK 1.5之后的拆裝箱過(guò)程--自動(dòng)拆裝箱 int i = 10; //自動(dòng)裝箱 Integer i001 = i; System.out.println("自動(dòng)裝箱后的結(jié)果,i001="+i001); } }
所謂的拆箱(Unboxing),其實(shí)就是將包裝類(lèi)型轉(zhuǎn)換成基本類(lèi)型,例如把Double變成double。同樣的,拆箱也分為手動(dòng)拆箱和自動(dòng)拆箱(Auto Boxing),手動(dòng)實(shí)例化操作包裝類(lèi),就是手動(dòng)拆箱。在JDK 1.5之前必須手動(dòng)進(jìn)行拆箱,JDK 1.5之后就可以自動(dòng)拆箱了。
下面的案例是手動(dòng)拆箱和自動(dòng)拆箱的實(shí)現(xiàn)過(guò)程。在JDK 1.5前后,拆箱有手動(dòng)拆箱和自動(dòng)拆箱之分,大家要注意。
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆裝箱過(guò)程--手動(dòng)拆裝箱 byte b = 10; //手動(dòng)裝箱 Byte b1 = Byte.valueOf(b); System.out.println("手動(dòng)裝箱后的結(jié)果,b1="+b1); //手動(dòng)拆箱 byte b2 = b1.byteValue(); System.out.println("手動(dòng)拆箱后的結(jié)果="+b2); //JDK 1.5之后的拆裝箱過(guò)程--自動(dòng)拆裝箱 int i = 10; //自動(dòng)裝箱 Integer i001 = i; System.out.println("自動(dòng)裝箱后的結(jié)果,i001="+i001); //自動(dòng)拆箱 int i002 = i001; System.out.println("自動(dòng)拆箱后的結(jié)果,i002="+i002); } }
我們要注意,自動(dòng)裝箱和自動(dòng)拆箱只發(fā)生在編譯階段,其目的是為了減少代碼的編寫(xiě)。從性能上來(lái)看,裝箱和拆箱的過(guò)程會(huì)影響代碼的執(zhí)行效率,因?yàn)榫幾g后的class代碼是嚴(yán)格區(qū)分基本類(lèi)型和引用類(lèi)型的,所以編譯階段的裝箱和拆箱,在編譯后還是要回歸原始。另外在自動(dòng)拆箱時(shí),如果賦值不當(dāng),有可能會(huì)產(chǎn)生NullPointerException異常,如下所示:
Integer n = null; //這里就會(huì)產(chǎn)生NPE空指針異常 int m = n;
關(guān)于“Java之怎么正確地對(duì)包裝類(lèi)進(jìn)行裝箱與拆箱”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。