在Java中工作,假设我制作了一个30 x 50单位的2D数组,如下所示:
public Array() {
int[][] array = new int[30][50];
}
然后我这样做:
int rows = array.length;
int columns = array[1].length;
为什么array.length给我的值为30?长度不也可以是50?同样,那么array [1] .length的工作原理是50?
我已经在其他地方看到了这个问题,但是我没有理解答案(Java中的初学者)。
编辑:这就是以前向我解释过的,我不明白。 "当我们引用array.length时,我们得到更大列表的长度,即30.当我们引用array [1] .length时,我们得到索引为1的小列表的长度在大列表中,这是大列表中的第二个小列表。这个值为50."答案 0 :(得分:1)
如果你重写这个,也许它会变得更清晰
int *a, *b;
声明数组时,必须至少指出第一个维度(30)。 在您的示例中,第一个维度的所有元素都包含对具有50个元素的数组的数组引用。
你也可以有不同的长度:
int* a, * b;
答案 1 :(得分:0)
首先,您需要知道2D数组实际上是一维数组,该数组中的每个元素都是另一个1D数组。
success undefined
所以a[0] = [0][1][2][3]
a[1] = [0][1][2][3]
a[2] = [0][1][2][3]
a[3] = [0][1][2][3]
将得到长度或被调用的数组
即 length
将是a.length
的长度,而不是在元素0或1处分配的数组的长度,... a
中的...
另请注意,在1D数组a
的每个元素中创建的数组可能具有不同的长度。因此,如果总是返回第一行的长度,则调用a
将不准确,即:a.length
a[0].length
答案 2 :(得分:0)
考虑这个简单的例子
阵列[3] [5];
阵列[number_of_row] [number_of_column];
array[3][5]
表示3 * 5矩阵
[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
在这里你可以清楚地看到3 * 5矩阵有3行5列, 这也意味着每行有5列。所以,array.length意味着 行数为3且数组为[1]。长度表示列数 在行位置1,即5
此逻辑与array[30][50]