1.包裝器類型列表
你知道 Java 有 8 種原始類型,它們是不是類的類型。一方面,這很好——它們很簡單,佔用的空間也很小。另一方面,有時類正是我們所需要的。您將在下一課中找到確切原因。
那麼可以做什麼呢?
從 Java 的第五個版本開始,每個原始類型都獲得了一個孿生類。每個這樣的類都存儲一個具有特定類型值的字段。這些類稱為包裝器類型,因為它們將原始值包裝在類中。
這是這些類型的列表。你知道任何?
原始類型 | 包裝類 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
基本類型的名稱以小寫字母開頭,而包裝類的名稱以大寫字母開頭。一些類名也有點長:Integer
instead of int
и Character
instead of char
。
包裝類的所有對像都是不可更改的(不可變的)。
該類的簡化代碼Integer
如下所示:
代碼 | 筆記 |
---|---|
|
變量 構造函數 方法返回值 靜態方法為變量創建一個新 Integer 對象int |
2. 將 an 轉換int
為 anInteger
包裝器類型被認為是它們的原始兄弟姐妹的對應物:您可以輕鬆地創建一個對應於原始類型的包裝器對象。
下面我們以int類型為例,分析原始類型是如何與對應的包裝類型進行交互的。int
從 an到 an的轉換代碼Integer
如下所示:
要將 an 轉換int
為 an Integer
,您需要編寫以下代碼:
Integer name = new Integer(value);
其中name
是變量名Integer
,value
是包裝後的int
值。
例子:
代碼 | 筆記 |
---|---|
|
|
|
|
|
要將 an 轉換Integer
為 an int
,您需要編寫以下代碼:
int name = variable.intValue();
其中name
是變量名int
,variable
是對對象的引用Integer
。
例子:
代碼 | 筆記 |
---|---|
|
|
|
|
|
|
|
|
3. 自動裝箱和拆箱
但即使是簡單的類型操作Integer
也不容易編寫。
正如我們之前所說,Integer
類型是不可改變的(不可變的)。要創建Integer
具有新int
值的對象,您需要顯式創建一個新Integer
對象。int
也就是說,獲取存儲在對象內部的值很容易Integer
——只需調用該intValue()
方法即可。
例子:
代碼 | 描述 |
---|---|
|
包裹5 在一個Integer 對像中從對像中獲取值 創建一個新對象(等於10) Integer Integer |
這是相當麻煩的代碼,你不覺得嗎?
Java 的創造者是這麼認為的,所以他們教編譯器如何自動執行這些操作。int
an到 an的自動轉換Integer
稱為自動裝箱(自動將值放入盒子中),反向操作(將 an 轉換Integer
為 an int
)稱為拆箱。
你的代碼 | 編譯器看到了什麼 |
---|---|
|
|
|
|
|
|
由於自動裝箱和拆箱,您可以安全地將 an 分配int
給Integer
變量,反之亦然。您可以編寫任何復雜的表達式,而無需區分類型int
和Integer
類型。
例子:
代碼 | 編譯器將生成什麼 |
---|---|
|
|
|
|
4.比較包裝器變量
自動裝箱和拆箱是簡單透明的過程。我們根據需要使用語句,根據需要new Integer()
調用方法。intValue()
一切對你來說都很好,很容易,程序員。請記住,如果您比較 anInteger
和 an Integer
,則比較基於參考而非值。
代碼 | 控制台輸出 |
---|---|
|
|
|
|
和a
變量b
不存儲int
值。它們存儲對對象的引用。這意味著記住如何正確比較它們很重要:
錯誤的 | 正確的 |
---|---|
|
|
GO TO FULL VERSION