Array如何将原始数据类型视为对象?

时间:2015-05-11 22:32:45

标签: java arrays object primitive

我对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 转换原始数据类型如何对象,因为通常是原始数据类型是对象。

谢谢!

2 个答案:

答案 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个实例)。