int a[][]=new int[2][]; // It works without any error
为什么此代码段中缺少第二个维度?
答案 0 :(得分:6)
从技术上讲,2D数组是一个数组数组。您指定的代码会告诉您希望拥有多少个数组。
您可以按如下方式进一步初始化:
int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[5];
像new int[2][2]
这样的东西只不过是上面代码的精简版本。
答案 1 :(得分:2)
这不是强制性的,因为不需要第二个维度来计算保存数组所需的内存量。
比较以下内容:
int[] a = new int[2];
在这种情况下,需要指示JVM为一个包含两个整数的数组分配空间。
另一方面:
int[][] = new int[2][];
在这种情况下,需要指示JVM为两个对整数数组对象的引用分配空间。这些整数数组对象最终的大小并不重要,因为它不会改变引用的大小。
实际上,这两个数组可以有不同的大小,甚至根本不会创建。
答案 2 :(得分:2)