我制作了一个非常基本的2D数组,它具有3行4列,就像这样。
int [][]array = new int[3][4];
当我尝试检查长度时,
System.out.println(array.length);
我得到3的结果。但是,当我尝试:
System.out.println(array[0].length);
我得到的结果为4。使用array[1].length
和array[2].length
可以得到相同的结果。我不确定编译器正在处理什么。谁能解释?
谢谢!
答案 0 :(得分:3)
您应该看的是实际上是由一个整数数组构成的一个数组。 例如,您可以这样初始化它:
int[][] array = {
{1, 2, 3, 4}, // This is the first array in the multidimensional array
{5, 6, 7, 8}, // This is the second array in the multidimensional array
{9, 10, 11, 12} // This is the third array in the multidimensional array
};
请注意,多维数组中的每个单独数组的长度均为4。
所以当您问这样的长度时:
array.length // = 3
Java所做的就是为您提供数组中int []的数量。 现在,该数组中的每个数组的长度为4,因此:
array[0].length // = 4
也可以说您要访问值为7的元素。 该元素可以在第二个数组中的第三位找到。 由于Java索引从0开始,因此您可以按以下方式访问该元素。
array[1][2] // value of this element is 7
您可以在https://www.programiz.com/java-programming/multidimensional-array上阅读更多内容。 多维数组在一开始就很难,但是一旦获得它们,就会经常使用它们。
答案 1 :(得分:1)
您可以将以下array
变量视为数组数组,它由3
个数组组成,每个数组包含4
个元素
int [][]array = new int[3][4];
因此,当您尝试array.length
时,您会得到3
第一个包含3个数组的数组,每个数组包含4
个元素,但是当您array[0].length
时,array[1].length
,array[2].length
,您正在检查array
变量中的元素数组的长度,这些元素都给您4
。
编辑:
让我们说您想从数组变量array
中取出数组并检查长度
int [] arr1 = array[0]; // arr1.length = array[0].length which is 4
int [] arr2 = array[1]; // arr2.length = array[1].length which is 4
int [] arr3 = array[2]; //arr3.length = array[2].length which is 4
答案 2 :(得分:0)
看到这是2D数组。
可以这么说,您有3个行和4个列。
这就是为什么当您执行array.length
时会给出行数,即3。
但是当您执行array[0].length
时,它会在该行中给出列数,为4。
所有行都有相同的列,即4,因此您使用array[1].length
和array[2].length
可获得相同的结果。
答案 3 :(得分:0)
二维数组看起来像矩阵,只是数组的数组。
如果您写:
System.out.println(array[0].length);
将为您提供第一个数组(4)的长度,即列数。
如果您写:
System.out.println(array.length);
将为您提供行数(3)的长度。