在Java中,这两种数组声明语法有什么区别吗?
并且。
int[] variableName;
并且。
int variableName[];
哪一个更好?
int[] variableName;
int variableName[];
哪一个更好?
虽然这两种语法等效,但int[] variableName;
的语法更受欢迎。int variableName[];
的语法之所以被允许,只是为了让所有从C/C++转到Java的程序员感到舒适。
有人认为int[] x
明确说明了x是整数数组类型,而在int x[]
中,实际类型被分成两部分,一个在变量x
之前,另一个在之后,读起来像 整数是变量x的类型,它是一个数组,使声明不太易读,对新手来说可能会产生混淆。
如果数组具有多个维度,则可读性问题会加剧,例如下面的所有声明都是等效且有效的:
int x[][][];
int[] x[][];
int[][] x[];
int[][][] x; // this one is the easiest to read!
同时注意,对于所有这些有效且等价的方法声明,相同的注意事项也适用(在所有情况下返回类型都相同)- 但再次强调,最后一个方法声明更容易阅读:
int m() [][][] {return null;}
int[] m() [][] {return null;}
int[][] m() [] {return null;}
int[][][] m() {return null;} // this one is the easiest to read!
class ArrayShowcase {
private int i, ints[], intints[][];
}
我们需要这样的声明吗?我认为我们可以没有它。在我职业生涯中写下的数十万行代码中,我从来没有需要过它。
如前所述,它们都是相同的,第一个更受欢迎。我想补充一点,保持一致性也是非常重要的。如果您更改使用其中之一的代码库,请继续使用相同的约定。
它们的意思是相同的,因此在语法上没有区别。然而,我见过开发人员使用其中之一。
我会使用 int[] var,因为它更加明确。它告诉读者这是一个 int 数组。如果你在变量名旁边加上 [],用户必须扫描整行代码才能看到这个数组的类型。就我个人而言,我会(以及我认识的大多数 Java 程序员也会)使用 int[]。
区别在于概念上,适合人类阅读。它们定义了同一件事情,但是
int[] variableName
与 int variableName[]
相比保持了variableName
的类型一致性,而在后者中则声明了数组变量属于 int
类型。