天天看點

對象包裝類與自動拆裝箱詳解+Integer常用方法

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