原始数据类型的二维数组可以包含不同类型的元素吗?我读过的文章表明它既可以也不能。
最佳答案
原始类型的二维数组,如 int
在技术上不仅仅是原始类型。外部数组包含一个 int[]
数组,它们实际上是 Object
- 不是原始类型(int[]
是一个Object
的子类型)。
这意味着 int[][]
数组可以包含 null
,而内部 int[]
数组只能包含原始 整数
。但是,int[][]
数组不能包含 int[]
以外的任何类型的元素。
示范
此代码无一异常(exception)地编译和执行:
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
关于Java原始数据类型的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162605/