可能的重复项:
为什么整数和整数可以互换使用?
我试图了解这些之间的区别。例如,我可以将某些内容声明为 int,然后将其与我放入整数中的数字进行比较吗?还有为什么Java有这两个。为什么不把这些结合起来呢?
有人可以帮助我展示一个 3-4 行代码示例来说明每个代码是如何使用的吗?
int
基元不是对象。数组允许基元:
int[] array = new int[10];
但泛型不会:
List<int> //won't compile
这是现在使用包装类的主要原因。您也可以在预期Object
的地方使用Integer
。最后,如果要实现可选性,Integer
可以具有null
值。
请注意,有一些语言处理了这种不一致。在 c# 中,你有值类型,在 scala 中,Int
类从类扩展AnyVal
而普通对象扩展AnyRef
(这两个对象都从 Any
扩展)。
参见 Java 中的类型装箱。 有人说要从Java 9开始使它们完全相同。
- 基元
int
类型和整数类是不同的类型。不能直接将基元int
与Integer
对象进行比较。您需要从Integer
对象获取intValue
。 - 是的,这是必需的功能。Java 和其他一些语言为基元类型提供了这些类型的对象包装器,以处理需要对象的情况。例如,集合类需要对象,不能对它们使用基元
int
。因此,您将需要一个Integer
包装器。
对象,而 int 是一个基元类型。从根本上说,对象是通过引用传递的,而基元是通过值传递的。它们在分配位置方面也有所不同。
就Java而言,对象具有函数。调用类似以下内容:
Integer.toString()
很好,但是:
int.toString()
莫。
基元,Integer是一个类。你不能说ArrayList<int>
但你可以说ArrayList<Integer>
.
Java 中的所有原始类型都有它们的类对应物(从 Object 衍生的类),例如布尔值、Long 等。它被称为"拳击"。解释参见示例 这里.