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
类型是不可改变的(immutable)。要创建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