多维数组声明

时间:2014-03-17 18:54:26

标签: java scjp

哪一个是有效的陈述?

  1. int[] x =new int[0]{};
  2. new int[2];
  3. int[] x=new int[][]int[][] x = new int[]{0}[0][0];[0];
  4. int x= new int[2]{}[];
  5. {{1}}
  6. 正确答案是3,我可以理解为什么它不是1,2或5,但我不明白3或4的意思。

2 个答案:

答案 0 :(得分:2)

1) int[] x =new int[0]{};

您不能同时指定长度0和数组初始值设定项。

2) new int[2];

这不是声明。如果它被分配给其他东西,它将成为一种陈述,以及其他可能性。

3) int[] x=new int[][]1[0];

这声明并初始化1x1 2D数组,其中4) int[][] x = new int[]{0}[0][0]; 是唯一的元素。然后,数组访问用于立即访问位置0处的“行”,这是唯一的“行”,它本身是一个1长度的1D数组,并且被分配给1D数组。

5) int x= new int[2]{}[];

这里有很多错误。创建了一个1长度的1D数组,但它上面有两个数组访问。你只能提供一个,因为它是一维数组。

[]

额外的int没有做任何事情,语法无效。即使它们已被删除,您也无法将int数组分配给标量{}。此外,您无法同时指定长度和数组初始值设定项{{1}}。

答案 1 :(得分:1)

  1. 使用{}声明和初始化数组时,不允许您指明数组中的项目数{4}应为int[0]。所以应该是int[]
  2. 这是一个没有声明的初始化,所以它应该是int[] x = new int[]{}
  3. 这是正确的,因为它为二维数组的项目赋予了一个声明,这是一个数组本身。因此,从int[] x = new int[2]返回的数组是new int[][]new int[]{1}[0],因此int[] x = new int[]{1}
  4. 这是完全错误的,搞砸了。 new int[]{0}[0][0]试图从一维数组中获取二维数组的值,并将其分配给数组x
  5. 这里已经在第1点中讨论过,加上尝试访问一个空索引[]的数组,这是不可能的。