这些代码块之间有什么区别?



所以我在读的一本书中多次阅读了这段代码:

int[][] someArray = new int[size][];
for(int i=0; i<size; i++)
   someArray[i] = new int[size];

我看不出这与以下声明有任何区别:

int[][] someArray = new int[size][size];

我错过了什么吗?有什么理由让我使用上面的长代码块吗?

谢谢,

您可以使用第一个构造

创建参差不齐凹凸不平的数组

正如parapura所说,您可以创建所谓的粗糙数组。从本质上讲,你可以制作三角形之类的东西(可能像楼梯、圣诞树或任何你想要的东西(。所以它可以像(使用随机数(

1 2 3

12

4 4 5 6 2 3 5

4 5 1

2 2 5 2

其中子阵列的长度是不同的大小。在你的例子中,尽管它们都是相同的尺寸,所以两种方式都做着完全相同的事情。

这样做的一个原因是节省内存空间,而不是零填充空插槽。

无差异here。当我们想要创建具有不同大小的数组时,第一个非常有用。

当有疑问时,请查看字节码——尤其是对于像这样只有几行代码的东西
显然,编译器有一个特殊的结构来创建第二种形式

第一种形式(没有循环(:public static void main(java.lang.String[](;代码:0:iconst_31:anewarray#2//class"[I"4:astore_15:返回

第二种形式:

0:iconst_31:iconst_32:多更新阵列#2,2//class"[[I"6:astore_17:返回

===============

一种方法是,当你知道无论如何都会有一个"方形"数组时,循环中会浪费很多时间。想象一下,如果你在谷歌,你需要一个大小为10000000的二维数组。第一种形式会非常慢。

相关内容

  • 没有找到相关文章

最新更新