【问题标题】:Java 2D array lengthJava 2D 数组长度
【发布时间】:2018-10-04 06:39:32
【问题描述】:

我制作了一个非常基本的 2D 数组,它有 3 行和 4 列,就像这样。

    int [][]array = new int[3][4];

当我尝试像这样检查长度时,

    System.out.println(array.length);

我得到 3 的结果。但是,当我尝试时:

    System.out.println(array[0].length);

我得到 4 的结果。使用 array[1].lengtharray[2].length 也是如此。我不确定编译器正在处理什么。谁能解释一下?

谢谢!

【问题讨论】:

  • 我不确定编译器正在处理什么。:这是什么意思?你对这个结果感到惊讶吗?为什么?请注意,Java 中没有二维数组之类的东西。仅包含数组的数组。
  • 您期待什么? array.length 是行数,array[i].length 是行数i
  • array 是一个int[][] (或者我应该说int[] 的数组,array[0] 是一个int[]
  • 数组在创建时定义为固定长度

标签: java arrays


【解决方案1】:

你应该看它的方式是你实际上创建了一个由整数数组组成的数组。 例如你可以这样初始化它:

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 阅读更多内容。 多维数组一开始很难,但是一旦得到,就会经常用到。

【讨论】:

    【解决方案2】:

    你可以把下面的array变量想象成数组的数组,它由3数组组成,每个数组都包含4元素

    int [][]array = new int[3][4];

    因此,当您尝试 array.length 时,您会得到 3 第一个包含 3 个数组的数组,每个数组包含 4 元素,但是当您使用 array[0].lengtharray[1].lengtharray[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
    

    【讨论】:

      【解决方案3】:

      看到这是二维数组。

      可以这么说,您有 3 个和 4 个

      这就是为什么当您执行 array.length 时,它会给出 行数,即 3。

      但是当您执行 array[0].length 时,它会在该行中给出 列数,即 4。

      所有行都有相同的 4 列,因此您可以使用 array[1].lengtharray[2].length 获得相同的结果。

      【讨论】:

      • 啊,我明白了。感谢您的澄清!
      • 会的!必须等待几分钟才能这样做:)
      【解决方案4】:

      二维数组看起来像一个矩阵,只是一个数组的数组。

      如果你写:

      System.out.println(array[0].length);
      

      会给你第一个数组的长度 (4),即列数。

      如果你写:

      System.out.println(array.length);
      

      会给你行数的长度 (3)。

      【讨论】:

      • 我认为矩阵比较不准确。
      • 我知道它不是矩阵,但我认为这是一个很好的方式来想象数组的数组。
      • 我刚刚意识到你在这种情况下实际上是正确的,毕竟它是一个数组。
      猜你喜欢
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多