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