Java二维原始数据类型数组

时间:2016-02-02 19:51:24

标签: java

原始数据类型的二维数组是否包含不同类型的元素?我读过的文章表明它既可以也可以不会。

3 个答案:

答案 0 :(得分:2)

原始类型的二维数组,例如int,在技术上不仅仅是原始类型。外部数组包含int[]数组的数组,实际上是Object s - 不是基本类型(int[]Object的子类型)。

这意味着int[][]数组可以包含null,而内部int[]数组只能包含原始int。但是,int[][]数组不能包含除int[]以外的任何类型的元素。

<强>示范

此代码编译并执行,没有例外:

int[][] a = {{1, 2, 3}, {4, 5, 6}, null};
System.out.println(Arrays.deepToString(a));
Object b = a;
System.out.println(Arrays.deepToString((int[][]) b));
int[][] c = a;
System.out.println(Arrays.deepToString(c));
int[] d = a[1];
System.out.println(Arrays.toString(d));
Object e = d;
System.out.println(Arrays.toString((int[]) e));
int[] f = a[2];
System.out.println(Arrays.toString(f));

并输出:

[[1, 2, 3], [4, 5, 6], null]
[[1, 2, 3], [4, 5, 6], null]
[[1, 2, 3], [4, 5, 6], null]
[4, 5, 6]
[4, 5, 6]
null

答案 1 :(得分:0)

在回应Nem的评论时,我建议您想拥有一个公共接口的二维数组,这样容器(二维数组)可以容纳不同的类型。当看到该接口的数组而不是Object数组时,另一个程序员会更有意义。同时使用&#34; instanceof&#34;运算符检查所述接口的具体实现。

如果需要,我可以提供一个例子。

答案 2 :(得分:0)

  

原始数据类型的二维数组是否包含不同类型的元素?我读过的文章表明它既可以又可以

int数组为例:

int[] nums1;     //Array of integers
int[][] nums2;   //Array of (Array of integers)
int[][][] nums3; //Array of (Array of (Array of integers))

因此,如果您将2D数组视为具有行和列的表,那么如果您询问该表是否可以在不同的行中包含不同的数据类型,则答案为否。

但是由于多维数组只是数组的数组,实际上它们确实包含不同类型的数据:一个持有int,另一个持有an array (an object)。< / p>