【问题标题】:Java Two Dimensional Array DefinitionJava 二维数组定义
【发布时间】:2013-08-29 08:32:46
【问题描述】:

我有一个非常基本的问题。

例如:

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]?


更新

所以基于下面有用的 cmets,我的第一个示例可以写成 [3][4] 数组,但第二个不能这样表示,对吗?

【问题讨论】:

  • 在这两种情况下,您都有数组数组,只是在第一个示例中,所有长度都相同
  • 关于您的更新,这是正确的。

标签: java arrays multidimensional-array definition dimensions


【解决方案1】:

不是 [3][4]。

它的数组数组,其中外部数组的维度为“3”,而数组元素也是数组,长度不等,分别为 1、3 和 4。

【讨论】:

    【解决方案2】:

    不,不是。当你像int[][] test = new int[3][4] 那样去时,那只是语法糖。双数组没有什么神奇之处。

    这两个例子都是数组的数组。您的第一个恰好所有这些数组的长度都相同,而您的第二个则没有。

    作为旁注,绝大多数 java 程序员使用int[][] a 表示法,而不是int a[][] 表示法。

    【讨论】:

      【解决方案3】:

      Java 中没有二维数组。

      只存在数组数组,每个数组可以有不同的长度

      对于矩阵,考虑线性内存布局,并使用现有库之一。

      请注意,以下内容在 Java 中有效:

      int[][] example = new int[2][2];
      example[0] = new int[]{1,2,3,4,5,6,7,8,9,10};
      

      而适当的矩阵模块不会允许这种情况发生。

      既是优势也是劣势。在某些应用程序中,您只需要数组。并且在某些情况下它更有效(例如仅存储半个三角矩阵)。

      【讨论】:

        【解决方案4】:

        这些被称为Jagged Arrays,它们不被视为m-by-n,因为它们不符合Matrix 的正式定义。

        在数学中,矩阵(复数矩阵)是一个矩形数组,由数字、符号或表达式组成,按行和列排列。

        【讨论】:

          【解决方案5】:

          我刚刚在 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]

          【讨论】:

          • 所以只有列长相同的array数组才可以称为[m][n],是吗?
          • [m][n] 指的是列数和行数。 [m] 和 [n] 的每个交集都必须填充一个值才能被视为矩阵。否则它是一个锯齿状数组。
          【解决方案6】:

          根据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 个元素,每个元素有不同数量的元素。

          【讨论】:

          • 所以只有列长相同的array的数组才可以称为[m][n],是吗?
          • @WangPeiTheDancer 是的,他们只遵循矩阵的定义
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-04
          • 2013-03-05
          • 1970-01-01
          相关资源
          最近更新 更多