內容來源良葛格學習筆記 (此篇文章僅供站長備份參考用,固為加密文章)
在Java中,所有您要處理的東西「幾乎」都是物件(Object),例如您之前所使用的Scanner是物件,字串(String)是物件,您之後還會看到更多的物件。
然而有些是例外,基本(Primitive)資料型態不是物件,也就是您使用int、double、boolean等宣告的變數,以及您在程式中直接寫下的字面常量。
使用Java有一段時間的人都知道,有些時候您需要將基本型態轉換為物件,例如使用Map時,要使用put()方法時需要的是物件而不是基本型態。
您要使用包裹型態(Wrapper Types)才能將基本資料型態包裝為物件,例如在 J2SE 1.4.2 之前,您要如下才能將int包裝為一個Integer物件:
在 J2SE 5.0 之後您可以這麼寫:
事實上編譯器在背後自動根據您寫下的陳述,為您進行自動裝箱(Autoboxing)動 作,同樣的動作可以適用於 boolean、byte、short、char、long、float、double等基本型態,分別會使用對應的包裹型態(Wrapper Types)Boolean、Byte、Short、Character、Integer、Long、Float或Double。
自動裝箱運用的方法還可以如下:
Integer integer = i;
您也可以使用更一般化的Number,例如:
3.14f會先被自動裝箱為Float,然後指定給number。
J2SE 5.0中可以自動裝箱,也可以自動拆箱(Unboxing),例如下面這樣寫是可以的:
int fooPrimitive = fooInteger;
在運算時,也可以自動裝箱與拆箱,例如:
System.out.println(i + 10);
System.out.println(i++);
上例中會顯示20與10,編譯器會自動幫您進行自動裝箱與拆箱,即10會先被裝箱,然後在i + 10時會先拆箱,進行加法運算;i++該行也是先拆箱再進行遞增運算。再來看一個例子:
System.out.println(boo && false);
同樣的,先將boo拆箱,再與false進行AND運算,結果會顯示false。
Place your comment