在 Java 中,int 是一个基本数据类型,而 Integer 则是一个包装类(Wrapper class)。
- int 作为一种基本数据类型,其灵活性相对较低。我们只能在其中存储整数的二进制值。
- 既然 Integer 是 int 数据类型的包装类,它为我们提供了在存储、转换和操作 int 数据时更多的灵活性。
- Integer 是一个类,因此它可以调用类中定义的各种内置方法。Integer 类型的变量存储的是对 Integer 对象的引用,就像任何其他引用(对象)类型一样。
示例:
****// 有效****
int n = 20;
****// 有效****
Integer n = 45;
****// 有效****
Integer.parseInt("10");
****// 无效****
int.parseInt("10");
关键区别点:
1. 转换为字符串变量
我们不能直接将字符串值(仅包含整数)赋值给 int 变量,即便通过类型转换(casting)也无法做到。然而,我们可以使用 Integer(String) 构造函数将一个 String 赋值给 Integer 类型的对象。我们甚至可以使用 parseInt(String) 方法将字符串字面量转换为 int 值。
Java
CODEBLOCK_adae2b84
输出
133.1
2. 将数值直接转换为其他进制
我们可以分别使用 toBinaryString()、toOctalString() 或 toHexString() 方法,将存储在 Integer 类中的整数值直接转换为二进制、八进制或十六进制格式。这在 int 类型的变量中是无法实现的。
Java
CODEBLOCK_59f06ee9
输出
1111011
173
7b
3. 对数据执行操作
Integer 类还允许我们分别使用 reverse()、rotateLeft() 和 rotateRight() 方法来反转数字,或者将其向左或向右旋转。我们需要为 int 变量定义自己的逻辑来执行这些操作,因为它不是一个内置的类。
Java
CODEBLOCK_87efd6ff
输出
Left Rotate : 48
Right rotate : 3
Reverse : 805306368
4. 灵活性
Integer 包装类为我们现有的 int 数据类型提供了更多的灵活性。除了预定义的运算符之外,我们还可以对 int 值执行许多操作。Integer 类主要用于我们需要将 int 变量作为对象处理的场景。由于包装类继承自 Object 类,它们可以在使用 Object 引用或泛型的集合中使用。因此,我们为现有的 int 数据类型增加了可为空的属性。自 Java 5 以来,我们有了自动装箱的概念,其中基本数据类型会自动转换为包装类,反之亦然。因此,w