我试图理解这些之间的区别。我可以将某些东西声明为int,然后将其与我放在整数中的数字进行比较吗?另外为什么Java有这两个。为什么不把这些结合起来?
有人可以通过向我展示3-4行代码示例来帮助我吗?
答案 0 :(得分:5)
int
原语不是对象。数组允许使用primiteves:
int[] array = new int[10];
但是仿制药没有:
List<int> //won't compile
这是目前使用包装类的主要原因。您也可以Integer
使用Object
。如果您要实施可选性,最后Integer
可以有null
值。
请注意,有些语言处理了这种不一致。在c#中,您有值类型,scala Int
类从AnyVal
类扩展,而普通对象扩展AnyRef
(两者都有)这些延伸自Any
)。
答案 1 :(得分:2)
请参阅Java中的boxing类型。从Java 9开始,有人说它们完全相同。
答案 2 :(得分:2)
int
类型和Integer类是不同的类型。您无法直接将原始int
与Integer
对象进行比较。您需要从intValue
对象获取Integer
。 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。