【问题标题】:Confusion in multi dimensional array in JavaJava中多维数组的混淆
【发布时间】:2011-02-27 10:27:42
【问题描述】:

下面的多维码我看不懂。有人可以澄清一下吗?

int[][] myJaggedArr = new int [][] 
{
              new int[] {1,3,5,7,9},
              new int[] {0,2,4,6},
               new int[] {11,22}
   };

我可以知道它与下面的代码有什么不同吗?

int[][] myArr = new int [][] {
             {1,3,5,7,9},
               {0,2,4,6},
                {11,22} };

【问题讨论】:

    标签: java arrays multidimensional-array


    【解决方案1】:

    根本没有什么不同。前者只是更明确地表明您正在创建一个数组数组。

    【讨论】:

      【解决方案2】:

      没有真正的区别。第一个是声明子数组,而第二个只是将数组的值放入数组中

      【讨论】:

        【解决方案3】:

        两段代码产生相同的结果。

        多维数组是数组的数组。

        • myArr[0][1] 将返回 3
        • myArr[1][1] 将返回 2
        • myArr[2][0] 将返回 11

        【讨论】:

          【解决方案4】:

          完全一样 - 如果您将一个替换为另一个并编译,您将获得逐字节相同的 class 文件。自己试试吧!

          【讨论】:

            【解决方案5】:

            这两个代码 sn-ps 都会产生具有等效值的多维数组。

            第二个 sn-p 表明,当使用内部数组的数组文字快捷方式时,不需要显式使用 new。对于外部数组也是如此。这段代码可以进一步简化为:

            int[][] myArr = { {1,3,5,7,9}, {0,2,4,6}, {11,22} };
            

            Oracle Java Tutorial 没有显示任何混合使用 new 来声明数组和文字数组声明的示例。

            【讨论】:

              【解决方案6】:

              以上述方式声明数组的开头。

              您可以通过以下方式创建数组:

              int [] arr = new int[3]; //(eq 1)

              您可以更进一步,通过以下方式声明数组中的值:

              int [] arr = {0,1,2}; //(eq 2)

              如果您提前知道自己的值,则不必创建 int[] 的实例。

              现在回答你的问题。正如其他人所说,两者之间没有区别,只是更清楚地了解您正在做什么。相当于eq。二维数组中的2是:

              int [][] arr = {{0,1,2},{3,4,5},{6,7,8}}; //(eq 3)

              请注意,在开始输入值之前,您无需声明“new int[][]”。 "{0,1,2}" 是一个数组本身,等式 3 中第一个 "{" 和最后一个 }" 中的所有其他内容也是如此。事实上,在声明 arr 之后,您可以调用数组 "{0,1 ,2}" 来自 eq 3 的以下语句:

              arr[0]; //(eq 4)

              eq 4 等价于 eq 2。您可以使用“new int [] {”或“new int [][] {”来切换简单的“{”。如果你想把一个换成另一个,那很好,唯一真正的区别是天气是否适合你的编码风格。

              为了好玩,这里是一个 3 维数组的简写语法示例:

              //这是一个很长的语句,我不建议这样使用它

              int [][][] arr = {{{0,1,2},{3,4,5},{6,7,8}}, {{9,10,11},{12,13,14},{15,16,17}}, {{18,19,20},{21,22,23},{24,25,26}}};

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-08
                • 1970-01-01
                • 1970-01-01
                • 2022-11-22
                相关资源
                最近更新 更多