6

可能重复:
为什么 Integer 和 int 可以互换使用?

我试图了解这些之间的区别。例如,我可以将某些东西声明为 int,然后将其与我放入 Integer 的数字进行比较吗?还有为什么Java有这两个。为什么不把这些结合起来呢?

有人可以通过向我展示每个如何使用的 3-4 行代码示例来帮助我吗?

4

6 回答 6

5

int原语不是对象。数组允许primiteves:

int[] array = new int[10];

但泛型不会:

List<int>  //won't compile

这是当今使用包装类的主要原因。您也可以IntegerObject预期的地方使用。如果你想实现可选性, finallyInteger可以有价值。null

请注意,有些语言处理了这种不一致。在中,您有值类型,在 中,类从类扩展,Int AnyVal普通对象扩展AnyRef(这两个都从类扩展Any)。

于 2012-06-16T16:31:15.063 回答
2

请参阅Java 中的类型装箱。有人说从 Ja​​va 9 开始让它们完全一样。

于 2012-06-16T16:32:23.630 回答
2
  • 原始int类型和整数类是不同的类型。您不能直接将基元intInteger对象进行比较。你需要intValueInteger对象中获取。
  • 是的,这是必需的功能。Java 和其他一些语言为原始类型提供了这些类型的对象包装器,以处理需要对象的情况。例如,集合类需要对象,您不能int对它们使用原始类型。所以你需要一个Integer包装器。
于 2012-06-16T16:33:44.347 回答
2

Integer 是一个对象,而 int 是一个原始类型。从根本上说,对象是通过引用传递的,而基元是通过值传递的。它们的分配位置也不同。

在 Java 中,对象具有函数。调用类似的东西:

Integer.toString()

很好,但是:

int.toString()

不是。

于 2012-06-16T16:34:09.650 回答
1

int 是一个原始类型,Integer 是一个类。你不能说ArrayList<int>,但你可以说ArrayList<Integer>

于 2012-06-16T16:31:43.880 回答
1

Java 中的所有原始类型都有对应的类(从 Object 派生的类),例如 Boolean、Long 等。它被称为“装箱”。解释参见例如here

于 2012-06-16T16:32:51.197 回答