数组初始化的差异

3

在查看一个源代码文件时,我看到了两种数组初始化的方式。我想知道这两种方式之间有什么区别:

int[] value = new int[0];

并且

int[] value_next = new int[]{};

?


2
没有区别,我更喜欢第一个。 - Maroun
4
你的第二行应该写成 int[] value_next = {},这样至少可以展示出一些它的优势。 - Marko Topolnik
@MarkoTopolnik 那很好! - VWeber
5个回答

6

实际上没有区别。这是java数组声明中的语法糖

第一种类型声明较少令人困惑,至少对我来说是这样的 :)

注意: 我不确定为什么在声明时将长度给定为

如果可能,请查看https://stackoverflow.com/a/19558179/1927832以了解一些优点。


这只是一个例子。我在 ArrayList 的 "toArray(T[] a)" 中看到过,其中零长度是可以的。 - VWeber

2
现在来证明一下(也是一个练习):
创建两个类,每个类包含一个声明。编译它们以获取 .class 文件。
对于这两个创建的文件,执行以下操作:
javap -c yourClass

查看Java的字节码

现在可以自己回答这个问题了。


1
+1 用于教授如何钓鱼。现在保存这个答案的文本,并将其应用于 SO 上的每第十个问题 :) - Marko Topolnik

1

完全没有区别。

int[] a = new int[0] 更好,因为它表明创建一个空数组的意图。


1

没有区别,尽管在第二种情况下,您有多余的[]

个人更喜欢使用int[] value_next = {}来创建空数组。

在我看来,int[] value = new int[0];可能在快速阅读时看起来像您正在创建一个具有初始值为0的一个元素的数组。在凌晨3点的调试会话期间,我真的很感激清晰明了。


0

不,它们没有区别。

两者都创建了一个具有0个元素的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接