int[] variableName; 和 int variableName[]; 之间的区别是什么?(关于IT技术)

7
在Java中,这两种数组声明语法有什么区别吗?
int[] variableName; 

并且。
int variableName[];

哪一个更好?


3
首选第一个选项以保持一致性。与后者不同,类型信息不会分散。如果[]未附加到基本类型,则很容易忽略它。 - egaga
没有功能上的区别。唯一的区别可能是一个程序员比另一个更容易理解。 - Hovercraft Full Of Eels
7个回答

16

虽然这两种语法等效,但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!

5
后缀语法必要的唯一情况是一个非常不重要的用例:
class ArrayShowcase {
  private int i, ints[], intints[][];
}

我们需要这样的声明吗?我认为我们可以没有它。在我职业生涯中写下的数十万行代码中,我从来没有需要过它。


1

如前所述,它们都是相同的,第一个更受欢迎。我想补充一点,保持一致性也是非常重要的。如果您更改使用其中之一的代码库,请继续使用相同的约定。


1
它们在语义上是完全相同的。int variablename[] 语法只是为了帮助C程序员适应Java而添加的。
int[] variable name 更可取,并且更少令人困惑。 请看这里

0

它们的意思是相同的,因此在语法上没有区别。然而,我见过开发人员使用其中之一。


0

我会使用 int[] var,因为它更加明确。它告诉读者这是一个 int 数组。如果你在变量名旁边加上 [],用户必须扫描整行代码才能看到这个数组的类型。就我个人而言,我会(以及我认识的大多数 Java 程序员也会)使用 int[]。


0

区别在于概念上,适合人类阅读。它们定义了同一件事情,但是

int[] variableNameint variableName[] 相比保持了variableName 的类型一致性,而在后者中则声明了数组变量属于 int 类型。


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