我有一个非常基础的问题。
例如:
int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
我们将其称为[3][4],因为它有3个元素,每个元素都有自己的4个元素。但是,如果是这样的呢:
int a[][] = {{1},{5,6,7},{9,10,11,12}}
这还是[3][4]吗?
更新
根据下面的有用评论,我的第一个例子可以写成[3][4]数组,但第二个例子不能这样表示,对吗?
我有一个非常基础的问题。
例如:
int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
int a[][] = {{1},{5,6,7},{9,10,11,12}}
这还是[3][4]吗?
更新
根据下面的有用评论,我的第一个例子可以写成[3][4]数组,但第二个例子不能这样表示,对吗?
根据Java的定义:
多维数组是由数组组成的数组。这与C或Fortran中的数组不同。这意味着行的长度可以不同。
例如:int a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
在这里,你不能说它是一个[3][4]的数组,但可以说它有3个元素,每个元素有自己的4个元素。
再举个例子:int a[][]={{1},{5,6,7},{9,10,11,12}}
在这里,你可以说这个数组有3个元素,每个元素有不同的元素数量。
我刚在 Android 环境中进行了这个测试,这应该对这种情况有效(我认为)。
int a[][] = { { 1 }, { 5, 6, 7 }, { 9, 10, 11, 12 } };
for (int i = 0; i < a.length; i++) {
Log.i("", "i: " + i);
for (int j = 0; j < a[i].length; j++) {
Log.i("", "j: " + j);
}
}
i: 0
j: 0
i: 1
j: 0
j: 1
j: 2
i: 2
j: 0
j: 1
j: 2
j: 3
a
不是 int[3][4]
。int[][] example = new int[2][2];
example[0] = new int[]{1,2,3,4,5,6,7,8,9,10};
一个合适的矩阵模块不会允许这种情况发生。
这既是一种优点,也是一种缺点。有些应用程序需要使用数组嵌套数组。而有些情况下,这样做更加高效(例如只存储半个三角形矩阵)。
它不是[3][4]。
它是一个数组的数组,其中外部数组的维度为“3”,而数组元素(再次是数组)的长度各不相同,分别为1、3和4。
int[][] test = new int[3][4]
时,那只是语法糖。双重数组并没有什么神奇的地方。int[][] a
表示法,而不是int a[][]
表示法。