为什么java有一个int和int Integer数据类型,我可以将数据从一个移动到另一个吗?

时间:2012-06-16 16:27:05

标签: java

  

可能重复:
  Why can Integer and int be used interchangably?

我试图理解这些之间的区别。我可以将某些东西声明为int,然后将其与我放在整数中的数字进行比较吗?另外为什么Java有这两个。为什么不把这些结合起来?

有人可以通过向我展示3-4行代码示例来帮助我吗?

6 个答案:

答案 0 :(得分:5)

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

int[] array = new int[10];

但是仿制药没有:

List<int>  //won't compile

这是目前使用包装类的主要原因。您也可以Integer使用Object。如果您要实施可选性,最后Integer可以有null值。

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

答案 1 :(得分:2)

请参阅Java中的boxing类型。从Java 9开始,有人说它们完全相同。

答案 2 :(得分:2)

  • 原始int类型和Integer类是不同的类型。您无法直接将原始intInteger对象进行比较。您需要从intValue对象获取Integer
  • 是的,这是必需的功能。 Java和其他一些语言为原始类型提供了这些类型的对象包装器来处理需要对象的情况。例如,集合类将期望对象,您不能使用原始int。所以你需要一个Integer包装器。

答案 3 :(得分:2)

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

就Java而言,对象具有功能。打电话给:

Integer.toString()

很好,但是:

int.toString()

不是。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

Java中的所有原始类型都有它们的类对应物(来自Object的类),例如Boolean,Long等。它被称为“拳击”。解释见例如here