4.對象包裝器與自動裝箱
所有的基本類型都有一個與之對應的類。下面以表格的形式展開
基本類型 | 包裝器(類) |
---|---|
int | Integer |
long | Long |
float | Float |
double | Double |
short | Short |
byte | Byte |
char | Character |
boolean | Boolean |
前六個類派生于公共的超類(Number)。
包裝器類是不可變的:一旦構造了包裝器,就不允許更改包裝在其中的值。同時,包裝器還是final,是以不能派生它們的子類
自動拆裝箱
以下自動裝箱示範
相反
拆箱
是以在常用運算中也可以使用包裝器(類)
關于自動裝箱還有幾點說明:
由于包裝器可以引用為null,是以自動裝箱有可能會抛出一個NullPointerException異常
Integer a = null;
System.out.println(a * 2);
如果條件中混合使用Integer和Double類型,Integer值就會拆箱,提升為double,再裝箱為Double
Integer a = 1;
Double b = 2.0;
System.out.println(true ? a : b); // 列印 1.0
最後強調一下,裝箱和拆箱是編譯器要做的工作,而不是虛拟機。編譯器在生成類的位元組碼時會插入必要的方法調用。虛拟機隻執行位元組碼。
java.lang.Integer
int intValue(); //将這個對象的值作為一個int傳回
static String toString(int i); //傳回一個新的String對象,表示指定i的十進制表示
static String toString(int i,int radix); //傳回數值i基于radix參數指定進制的表示
static int parseInt(String s);//傳回字元串s表示的整數,指定字元串必須為一個十進制整數
static int parseInt(String s, int radix); //采用radix參數指定的進制
static Integer valueOf(String s);//傳回一個新的Integer對象,用字元串s表示整數的初始化.預設十進制
static Integer valueOf(String s,int radix);
示範:
Integer a = 1;
String str = "he";
String str2 = "12";
int b = a.intValue(); //簡寫 int b = a;
System.out.println(b); //結果:1
String c = a.toString();
System.out.println(c); //結果: "1"
String c2 = Integer.toString(31,16);
System.out.println(c2); //:1f 十六進制數
int s = Integer.parseInt(str2);
System.out.println(s + 1); //結果: 5
int s2 = Integer.parseInt("41",16);
System.out.println(s2); //結果:65
Integer it = Integer.valueOf("4");
System.out.println(it); //結果 4
Integer it2 = Integer.valueOf("41",16);
System.out.println(it2); // 65