二维数组初始值设定项后跟方括号

2022-08-31 14:29:22

我在理解这段代码时遇到了问题:

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

为什么它是可编译的,我怎么能理解这样的声明?


答案 1

你在这里做的是:

  1. 声明新变量(一维数组)int[] it
  2. 从第一个元素分配其值[0]
  3. 的二维数组new int[][]
  4. 初始化为{{1}}

因此,您创建了一个二维数组,该数组初始化为包含一个包含的数组,同时您获取外部数组的第一个元素(这是一个包含 的一维数组)并将其分配给您的变量。11


答案 2
int[] it = new int[][]{{1}}[0];

让我们把这个分解成每个阶段,以及它的含义。

new int[][] 

这是一个新的多维数组。

{{1}} 

这是一个多维数组文本。它生成一个如下所示的数组:

[0] = [1]
[1] = []
[2] = []
...
[N] = []

所以请注意,这个数组中的每个元素本身就是一个数组。然后,您指定变量等于多维数组中的第一个数组,因此它直接等同于:it

int[] it = new int[] {1};