什么决定了2D数组的array.length值?

时间:2016-12-11 10:26:31

标签: java arrays

在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."

3 个答案:

答案 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]

相同