【问题标题】:Why second dimension is not mandatory in 2d array in java?为什么在java中的二维数组中第二维不是强制性的?
【发布时间】:2017-08-09 05:17:54
【问题描述】:
int a[][]=new int[2][]; // It works without any error

为什么这个 sn-p 中缺少第二个维度?

【问题讨论】:

  • 因为Java中的二维数组只不过是一个数组数组。您甚至可以创建一个二维数组,其中每个子数组具有不同的长度或不同的类型。

标签: java


【解决方案1】:

从技术上讲,二维数组是数组的数组。您指定的代码告诉您想要拥有多少个数组。

您可以按如下方式进一步初始化:

int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[5];

new int[2][2] 之类的东西只不过是上面代码的压缩版本。

【讨论】:

    【解决方案2】:

    这不是强制性的,因为不需要第二维来计算保存数组需要多少内存。

    比较以下:

    int[] a = new int[2];
    

    在这种情况下,需要指示 JVM 为 一个包含两个整数的数组分配空间

    另一方面:

    int[][] = new int[2][];
    

    在这种情况下,需要指示 JVM 为 对整数数组对象的两个引用分配空间。这些整数数组对象最终的大小无关紧要,因为它不会改变引用的大小。

    实际上,这两个数组可以有不同的大小,甚至根本不创建。

    【讨论】:

      【解决方案3】:

      数组中的第二维在 Java 中是可选。您可以创建一个二维数组而不指定两个维度,例如int[4][] 是有效的数组声明。

      这背后的原因是Java不支持真正意义上的多维数组。在真正的二维数组中,数组的所有元素都占用一个连续的内存块,但在 Java 中并非如此。

      而多维数组是数组的数组。例如,Java 中的二维数组只是一维数组的数组,例如 String[][] 是 String[] 的数组或“字符串数组的数组”。此图显示了二维数组在 Java 中的存储方式:

      【讨论】:

        猜你喜欢
        • 2018-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-16
        相关资源
        最近更新 更多