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

为什么java有int和int-Integer数据类型,我可以将数据从一个数据类型移动到另一个数据类型?,java,c#,scala,Java,C#,Scala,可能重复: 我试图理解这两者之间的区别。例如,我可以将某个东西声明为int,然后将其与放入整数中的数字进行比较吗?还有,为什么Java有这两个。为什么不把这些结合起来呢 有人能帮我看一个3-4行代码的示例,说明如何使用每行代码吗?int原语不是对象。阵列允许primiteves: int[] array = new int[10]; 但仿制药不会: List<int> //won't compile List//无法编译 这是现在使用包装类的主要原因。您还可以在需要对象时使

可能重复:

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


有人能帮我看一个3-4行代码的示例,说明如何使用每行代码吗?

int
原语不是对象。阵列允许primiteves:

int[] array = new int[10];
但仿制药不会:

List<int>  //won't compile
List//无法编译
这是现在使用包装类的主要原因。您还可以在需要
对象时使用
整数
。最后,如果要实现可选性,
Integer
可以具有
null


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

Int是一个基元,Integer是一个类。
不能说
ArrayList
,但可以说
ArrayList

参见Java中的类型。有人说要从Java 9开始使它们完全相同。

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

  • 基元
    int
    类型和类是不同的类型。不能直接将原语
    int
    Integer
    对象进行比较。您需要从
    Integer
    对象获取
    intValue
  • 是的,这是必需的功能。Java和其他一些语言为基本类型提供了这些类型的对象包装器,以处理需要对象的情况。例如,一个集合类需要对象,您不能对它们使用primitive
    int
    。因此,您需要一个
    整数
    包装器

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

就Java而言,对象具有函数。比如说:

Integer.toString()
很好,但是:

int.toString()

不是。

确切地说,java有一个基本类型int和一个类“Integer”!这个类有例程等等,原语类型就是,原语!!!基本类型速度更快,但它们的行为不像类对象。java中的一切都是按值传递的。基本体和对象都一样。Java碰巧在内部将对象存储为指针,因此对象的值就是指针。事实上,java语言规范特别声明所有方法参数都是按值传递的。然而,人们经常将其误认为是通过引用传递,因为您可以调用一个更改字段的方法,而调用者看到了这一点。这与通过引用传递无关。