我正在用Java更新遗留代码库,我找到了这样的一行:
Object arg[] = { new Integer(20), new Integer(22) };
这条线引起了我的注意,因为我习惯了这种代码:
Object[] arg = { new Integer(20), new Integer(22) };
这里的数组内容并不重要。我很好奇变量名旁边的括号与类名旁边的括号。我在Eclipse(使用Java 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)
简短回答:不。