“Object [] x”和“Object x []”之间有什么区别吗?

时间:2010-02-09 14:08:13

标签: java arrays declaration

我正在用Java更新遗留代码库,我找到了这样的一行:

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

这条线引起了我的注意,因为我习惯了这种代码:

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

这里的数组内容并不重要。我很好奇变量名旁边的括号与类名旁边的括号。我在Eclipse(使用Java 5)中尝试过,这两行对编译器都有效。

这些声明之间有什么区别吗?

5 个答案:

答案 0 :(得分:15)

两者都是合法的,都是有效的。但建议在数组名称前放置[]。

来自Javadocs

  

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

float anArrayOfFloats[]; // this form is discouraged
  

但是,公约不鼓励这种形式;括号标识数组类型,并应显示类型名称。

答案 1 :(得分:14)

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

float anArrayOfFloats[], aSecondVariable;

将声明一个浮点数和一个浮点数,同时:

float[] anArrayOfFloats, aSecondVariable;

将声明两个浮点数组。

答案 2 :(得分:4)

没有区别。两者都是合法的。

您可以阅读Java语言规范http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

  

[]可能会显示为该类型的一部分   在宣言开始时,   或作为a的声明者的一部分   特殊变量,或两者兼而有之   这个例子:

byte[] rowvector, colvector, matrix[];

答案 3 :(得分:1)

Integer[] ints而不是Integer ints[]的另一个好理由是继承关系:Integer[]Number[]的子类型是Object[]的子类型。

换句话说,您可以将Integers放在Object数组中,这样您就可以将[]视为对象类型定义的一部分 - 这就是它有意义的原因使它接近类型而不是对象名称。

答案 4 :(得分:0)

简短回答:不。

相关问题