我对Java Programming有点新鲜。两三天前,我在脑海中遇到了一个关于阵列的问题,下面给出了这个问题。
每个Java程序员都知道,Array是Objects的集合,它是否包含原始数据类型或字符串无关紧要。
所以我的问题是,如果Array是对象的集合,那么它如何对待或将原始数据类型转换为对象,因为在Java中,Primitive Data Type与Objects(如Strings)不同。 请考虑以下程序: -
int[] Array = new int[3];
Array[0] = 1;
Array[1] = 2;
Array[2] = 4;`
for(int a=0;a<Array.length;a++) System.out.println(Array[a]);
我使用 new 关键字制作数组或数组对象,然后使用数据类型。当然,这对于数组来说是可行的。但是当我为变量做这样的事情时,它会失败。
int var1 = new int 3;
要注意,请再次询问,Java Array 将或转换原始数据类型如何对象,因为通常是原始数据类型是不对象。
谢谢!
答案 0 :(得分:3)
在java中,有两类类型:基元和引用(即对象)
数组类型(无论是原始数组还是对象数组)始终是引用类型。例如,int[]
是Object
的子类型。您可以在Object
上调用int[]
中的任何方法。
尽管如此,int[]
是一个基元数组,而不是对象。
答案 1 :(得分:3)
JLS-10. Arrays说(部分),
在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给
Object
(§4.3.2)类型的变量。可以在数组上调用类Object
的所有方法。
...
数组的所有组件都具有相同的类型,称为数组的组件类型。如果数组的组件类型为
T
,则表示数组本身的类型为T[]
。
float
类型的数组组件的值始终是float
值集(§4.2.3)的元素;类似地,类型double
的数组组件的值始终是double
值集的元素。类型float
的数组组件的值不允许是float-extended-exponent值集的元素,它不是float
值集的元素,也不允许类型double
的数组组件的值是double-extended-exponent值集的元素,它不是double
值集的元素。
tl; dr 基元数组仍然是Object
,但其“组件类型仍然是基本类型。最后,虽然它不适用于您的问题,但是当在预期Object
的地方使用原始类型时,Java确实有一个名为Autoboxing的功能,它可以将原语转换为相应的包装类型(反之亦然,也就是取消装箱)。但是数组可以存储基本类型(不同于Collection
(只能存储Object
个实例)。