Java 在一行中创建数组
我有密码Java 在一行中创建数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我有密码 String ejgStr[] = new String[][]{{null},new String[]{"a","b","c"},{new String()}}[0] ; System.out.println(ejgStr[0]); 它编译时不会出错。 据我所知,你不能用不匹配的方括号创建数组 在左边,我们有字符串ejgStr[],它是一维数组,并且 右边是字符串[][{some array}[0],它是二维数组 它们似乎有不同的维度,但为什么要成功编译?您可以为ejgStr引
String ejgStr[] = new String[][]{{null},new String[]{"a","b","c"},{new String()}}[0] ;
System.out.println(ejgStr[0]);
它编译时不会出错。
据我所知,你不能用不匹配的方括号创建数组
在左边,我们有字符串ejgStr[],它是一维数组,并且
右边是字符串[][{some array}[0],它是二维数组
它们似乎有不同的维度,但为什么要成功编译?您可以为ejgStr引用分配一个1D数组。如果查看第一个statemend的末尾,您将看到指定了一个
[0]
索引,这意味着您将为引用分配第一个数组(位置0)。如果删除[0]
,您将收到一个编译错误。新字符串[][]{…}
是一个二维数组。新字符串[][]{…}[0]
是2D数组的第一个元素,该数组是1D数组。这就是您分配给
String ejgStr[]
的内容。您将一维String[]
数组分配给内联二维String[]
数组的第一维。看看评论:
String ejgStr[] =
new String[][] {
{ null }, // a null 1D String array
new String[] {"a","b","c"}, // a 1D String array containing a,b,c
{ new String() } // a String array containing empty String
}[0]; // access the { null } 1D array
我希望你的任务相当于这样做:
String ejgStr[] = { null };
字符串ejgStr[]
只是堆空间中变量的引用。
您使用[0]
指向二维数组的第一维,并在ejgStr[]
中引用它。从2D数组中获取1D并不常见,但如果需要,您可以这样做,当然不会产生编译错误。最好使用String[]ejgStr=
。另一个允许的符号是为了与C/C++兼容而添加的,对于新手或C/C++程序员来说是一个致命的赠品