2010-02-09 88 views
8

我正在更新Java中的遗留代码库,我发现这样一行:“Object [] x”和“Object x []”有什么区别吗?

Object arg[] = { new Integer(20), new Integer(22) }; 

这条线钓到了我的注意,因为我已经习惯了这种代码:

Object[] arg = { new Integer(20), new Integer(22) }; 

内容阵列在这里并不重要。我对变量名旁边的括号和类名旁边的括号感到好奇。我在Eclipse中尝试过(使用Java 5),两行对于编译器都是有效的。

这些声明有没有区别?

回答

15

都是法律规范和里工作。但建议在数组名前放置[]。

Javadocs

您也可以放置在方括号数组名称后面:

float anArrayOfFloats[]; // this form is discouraged 

然而,公约鼓励这种形式;括号标识阵列类型,并应与类型标识一起出现。

+2

把[]与类型放在一起更清晰;尝试读取“[]”作为“数组” - int []读作“int数组”,而int variableName []排序作为事后处理的“数组”部分。 – froadie 2010-02-09 14:47:16

14

不,他们都工作。但是要注意:

float anArrayOfFloats[], aSecondVariable; 

将宣布花车的一个阵列和一个浮动,而:

float[] anArrayOfFloats, aSecondVariable; 

将宣布花车阵列。

+4

我认为在这种情况下,答案是使用两个声明... – uckelman 2010-02-09 14:18:01

0

简短的回答:

1

另一个很好的理由号写Integer[] ints,而不是Integer ints[]是因为继承关系:Integer[]Number[]亚型是Object[]亚型。

换句话说,你可以把IntegersObject阵列,这样你就可以把[]作为对象的类型定义的一部分 - 这就是为什么它是有道理的有它接近类型,而不是对象名称。

相关问题