JAVA在5.0版本之後之後給每個primitive主資料型別(除了char)都準備了一個包裝類,
int→Integer;long→Long;byte→Byte;short→Short;float→Float;
double→Double ;boolean→Boolean;
包裝類別有什麼作用呢?
包裝類別的功能就是將一個值傳入包裝類別的建構函數,這樣就能創造出一個包裝類別的物件。而且包裝類別還具有自動裝箱和自動拆包的功能。
以下僅以Integer舉例,例如:
Integer d=3;//自動裝箱,即可用int值建構一個物件並指向引用變數。
int d=new Integer(123);//自動拆包,將物件的實例變數值直接賦給int型變數。
當然不只這些用處。
也可以在ArrayList
如果某些方法的參數是某種包裝類型,則可以直接傳入相對應的primitive主資料類型;方法的回傳值同樣可以;
還有就是條件判斷語句,也可以用Boolean的引用來判斷。
當然在數值運算的時候也可以:
int a=new Integer(2)+3;//也是可以運作的。
需要特別注意的是Integer的自動裝箱的一個小知識,
Integer a=new Integer(127); Integer b=(127); System.out.println(a==b); System.out.println(a.equals(b));
結果為false,true。但當
Integer c=127; Integer d=127; System.out.println(a==b); System.out.println(a.equals(b));
結果卻是true,true。
會出現這種情框是因為,在自動裝箱時如果創建一個Integer對象傳入的值小於128的話,在創建第二個對象並且與第一個對象傳入的值相等,那麼第二個對象的應用變數會直接指向建立的第一個對象,而不會再建立一個新的對象。
類別中一般都會有方法,java定義的包裝類別中也有許多方法來運用,
以Integer例列舉一些重要的靜態方法,也就是可以直接以Integer呼叫的方法。
將一段字串解碼成為一個Integer內的實例變數值, decode(String st)
講一段字串解析為一個int值,Integer.parseInt(String,int );//String為傳入的數字型字符串,int為所傳入的字串的進位,此方法傳回的是一個十進位的int值,例如:
System.out.println(d.parseInt("4d", 16));
回傳的是77.
還可以翻過來講int或Integer轉變為String:
int e=3; 或 Integer.toString(new Integer(22));
Integer.toString(e);
還有很多方法,具體可以查看API中的java.lang.Integer類別。其他幾個包裝類也大都如此。