为什么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语言规范特别声明所有方法参数都是按值传递的。然而,人们经常将其误认为是通过引用传递,因为您可以调用一个更改字段的方法,而调用者看到了这一点。这与通过引用传递无关。