Java 多维数组声明

Java 多维数组声明,java,scjp,Java,Scjp,哪一个是有效的声明 int[]x=newint[0]{} newint[2] int[]x=newint[][{{1}}[0] int[]]x=newint[]{0}[0][0] intx=newint[2]{}[] 正确答案是3,我能理解为什么不是1,2或5,但我不理解3或4的意思 1) int[] x =new int[0]{}; 不能同时指定长度0和数组初始值设定项 2) new int[2]; 这不是一个声明。它将成为一个声明,如果它被分配到其他的东西,除了其他可能性 3) int[

哪一个是有效的声明

  • int[]x=newint[0]{}
  • newint[2]
  • int[]x=newint[][{{1}}[0]
  • int[]]x=newint[]{0}[0][0]
  • intx=newint[2]{}[]
  • 正确答案是3,我能理解为什么不是1,2或5,但我不理解3或4的意思

    1) int[] x =new int[0]{};
    
    不能同时指定长度
    0
    和数组初始值设定项

    2) new int[2];
    
    这不是一个声明。它将成为一个声明,如果它被分配到其他的东西,除了其他可能性

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

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    这里有很多错误。创建了一个1长度的1D数组,但有两个数组访问。您只能提供一个,因为它是1D阵列

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    额外的
    []
    不起任何作用,语法无效。即使删除了它们,也不能将
    int
    数组分配给标量
    int
    。此外,不能同时指定长度和数组初始值设定项
    {}

    2) new int[2];
    
    不能同时指定长度
    0
    和数组初始值设定项

    2) new int[2];
    
    这不是一个声明。它将成为一个声明,如果它被分配到其他的东西,除了其他可能性

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

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    这里有很多错误。创建了一个1长度的1D数组,但有两个数组访问。您只能提供一个,因为它是1D阵列

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    额外的
    []
    不起任何作用,语法无效。即使删除了它们,也不能将
    int
    数组分配给标量
    int
    。此外,不能同时指定长度和数组初始值设定项
    {}

    2) new int[2];
    
    不能同时指定长度
    0
    和数组初始值设定项

    2) new int[2];
    
    这不是一个声明。它将成为一个声明,如果它被分配到其他的东西,除了其他可能性

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

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    这里有很多错误。创建了一个1长度的1D数组,但有两个数组访问。您只能提供一个,因为它是1D阵列

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    额外的
    []
    不起任何作用,语法无效。即使删除了它们,也不能将
    int
    数组分配给标量
    int
    。此外,不能同时指定长度和数组初始值设定项
    {}

    2) new int[2];
    
    不能同时指定长度
    0
    和数组初始值设定项

    2) new int[2];
    
    这不是一个声明。它将成为一个声明,如果它被分配到其他的东西,除了其他可能性

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

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    这里有很多错误。创建了一个1长度的1D数组,但有两个数组访问。您只能提供一个,因为它是1D阵列

    4) int[][] x = new int[]{0}[0][0];
    
    5) int x= new int[2]{}[];
    
    额外的
    []
    不起任何作用,语法无效。即使删除了它们,也不能将
    int
    数组分配给标量
    int
    。此外,不能同时指定长度和数组初始值设定项
    {}

    2) new int[2];
    
  • 使用
    {}
    声明和初始化数组时,不允许指示数组中的项数,因为
    int[0]
    应为
    int[]
    。所以它应该是
    int[]x=newint[]{}
  • 这是一个没有声明的初始化,因此它应该类似于
    int[]x=new int[2]
  • 这是正确的,因为它将声明分配给二维数组的一个项,该项本身就是一个数组。因此,从
    newint[]{{1}}[0]
    返回的数组是
    newint[]{1}
    ,因此
    int[]x=newint[]{1}
  • 这是完全错误和混乱的
    newint[]{0}[0][0]
    正在尝试从一维数组获取二维数组的值,并将其分配给数组
    x
  • 这里已经在第1点中讨论过,加上尝试访问带有空索引的数组
    []
    ,这是不可能的
  • 使用
    {}
    声明和初始化数组时,不允许指示数组中的项数,因为
    int[0]
    应为
    int[]
    。所以它应该是
    int[]x=newint[]{}
  • 这是一个没有声明的初始化,因此它应该类似于
    int[]x=new int[2]
  • 这是正确的,因为它将声明分配给二维数组的一个项,该项本身就是一个数组。因此,从
    newint[]{{1}}[0]
    返回的数组是
    newint[]{1}
    ,因此
    int[]x=newint[]{1}
  • 这是完全错误和混乱的
    newint[]{0}[0][0]
    正在尝试从一维数组获取二维数组的值,并将其分配给数组
    x
  • 如第1点所述,再加上尝试访问具有空索引的数组
    []