【发布时间】:2017-08-09 05:17:54
【问题描述】:
int a[][]=new int[2][]; // It works without any error
为什么这个 sn-p 中缺少第二个维度?
【问题讨论】:
-
因为Java中的二维数组只不过是一个数组数组。您甚至可以创建一个二维数组,其中每个子数组具有不同的长度或不同的类型。
标签: java
int a[][]=new int[2][]; // It works without any error
为什么这个 sn-p 中缺少第二个维度?
【问题讨论】:
标签: java
从技术上讲,二维数组是数组的数组。您指定的代码告诉您想要拥有多少个数组。
您可以按如下方式进一步初始化:
int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[5];
new int[2][2] 之类的东西只不过是上面代码的压缩版本。
【讨论】:
这不是强制性的,因为不需要第二维来计算保存数组需要多少内存。
比较以下:
int[] a = new int[2];
在这种情况下,需要指示 JVM 为 一个包含两个整数的数组分配空间。
另一方面:
int[][] = new int[2][];
在这种情况下,需要指示 JVM 为 对整数数组对象的两个引用分配空间。这些整数数组对象最终的大小无关紧要,因为它不会改变引用的大小。
实际上,这两个数组可以有不同的大小,甚至根本不创建。
【讨论】: