7

java中这两种数组声明语法之间有什么区别吗?

int[] variableName; 

int variableName[];

哪个是首选?

4

7 回答 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!
于 2012-08-25T13:51:16.323 回答
5

后缀语法必不可少的唯一情况是非常非必要的用例:

class ArrayShowcase {
  private int i, ints[], intints[][];
}

我们需要这样的声明吗?好吧,我想我们可以没有他们生活。在我的职业生涯中编写的数十万行代码中,我从未需要它。

于 2012-08-25T14:11:42.047 回答
1

如前所述,它们都是相同的,并且首选第一个。我想补充一点,与各自的用法保持一致也很重要。如果您更改使用两者之一的代码库,请保持相同的约定。

于 2012-08-25T13:57:37.983 回答
1

它们在语义上是相同的。添加 int variablename[] 语法只是为了帮助 C 程序员习惯 java。

int[] 变量名更可取,并且更少混淆。

看这里

于 2012-08-25T14:00:23.087 回答
0

它们的含义相同,因此在语法上没有区别。但是,我看到开发人员使用其中一种或另一种。

于 2012-08-25T13:50:48.653 回答
0

我会使用 int[] var 因为它更明确。它告诉读者它是一个 int 数组。如果变量名称旁边有 [],则用户必须跨行扫描才能查看此数组的类型。我个人(以及我认识的大多数 Java 程序员)会使用 int[]

于 2012-08-25T13:54:20.290 回答
0

对于人类阅读来说,区别是概念上的。他们定义了同样的东西,但是

int[] variableName保持类型variableName一致

int variableName[]其中,声明数组变量的类型为int

于 2012-08-25T14:01:12.977 回答