一维数组引用多维数组

时间:2013-12-24 21:45:59

标签: java arrays multidimensional-array

为什么这段代码会编译?

int[] array = new int[][]{{1}}[0];

左侧是一维数组。在右边,我认为这是三维的,但事实并非如此?

3 个答案:

答案 0 :(得分:7)

右侧是一维数组,是二维数组的第一个(0 th )元素

new int[][]int[] array = (new int[][]{{1}}) [0];// [0] is returning first row of 2D array
                          // which is 1D array so it can be assigned to `array` 

为了更清楚地展示它,我们可以添加括号

{{1}}

答案 1 :(得分:3)

右侧表达有两件事。

//   instantiate new 2D array
//            ┌──────┸───────┑  ┌ access zeroth element of new 2D array
//            │              │  │
int[] array = new int[][]int[][] array2D = new int[1][1];
array2D[0][0] = 1;

int[] array = array2D[0];
 [0];

这基本上等同于以下内容:

{{1}}

答案 2 :(得分:0)

从内存管理的角度来看,二维数组与一维数组相同(意味着数据存储在单个维度中)。因此,二维数组的第一个元素与一维数组的第一个元素相同。