物件包裝器與自動裝箱(Java的128陷阱)

2021-08-21 16:54:23 字數 1359 閱讀 1520

有時, 需要將 int 這樣的基本型別轉換為物件。 所有的基本型別都冇乙個與之對應的類。

假設想定義乙個整型陣列列表。而尖括號中的型別引數不允許是基本型別,也就是說,不允許寫成 arraylist。這裡就用到了 integer 物件包裝器類。我們可以宣告乙個 integer物件的陣列列表。

arraylistlist = new arraylist<>();
幸運的是, 有乙個很有用的特性, 從而更加便於新增 int 型別的元素到 arraylis中。下面這個呼叫

list.add(3);
將自動地變換成

list.add (integer.value0f(3));
這種變換被稱為自動裝箱(autoboxing)。

public static void main(string args) throws exception
最後強調一下,裝箱和拆箱是編譯器認可的,而不是虛擬機器。編譯器在生成類的位元組碼時, 插人必要的方法呼叫。虛擬機器只是執行這些位元組碼。

int intvalue( )
以 int 的形式返回 integer 物件的值(在 number 類中覆蓋了 intvalue方法)。

下面是integer類的常用方法:

static string tostring(int i )

以乙個新 string 物件的形式返回給定數值 i 的十進位制表示。

static string tostring(int i ,int radix )

返回數值 i 的基於給定 radix 引數進製的表示。

static int parselnt(string s)

static int parseint(string s,int radix)

返回字串 s 表示的整型數值, 給定字串表示的是十進位制的整數(第一種方法,)

或者是 radix 引數進製的整數(第二種方法 。)

static integer valueof(string s)

static integer value of(string s, int radix)

返回用 s 表示的整型數值進行初始化後的乙個新 integer 物件, 給定字串表示的是十

進製的整數(第一種方法,)或者是 radix 引數進製的整數(第二種方法。)

number parse(string s)

返回數字值,假設給定的 string 表示了乙個數值。

public static void main(string args) throws exception

物件包裝器與自動裝箱

由於每個值分別包裝在物件中,所以arraylist的效率遠遠低於int 陣列。自動裝箱 拆箱 包裝器物件的比較使用equals 方法,不能使用 比較的是位址 包裝器類引用可以為null。如果在乙個表示式中混合使用integer double型別,integer值會自動拆箱,提公升為double,再裝...

(九)物件包裝器與自動裝箱

有時候需要將基本資料型別轉換為物件,如int integer。integer這樣的類稱為物件包裝器類,該類一旦構造物件,便是不可變的。裝箱 list.add 3 自動變為 list.add integer.valueof 3 拆箱 int n list.get i 自動變為 int n list.g...

包裝類與自動裝箱

對應關係 基本資料型別包裝類 bytebyte booleanboolean shortshort charcharacter intinteger longlong floatfloat doubledouble int包裝類integer integer i new integer 1000 s...