我最近一直在思考定义数组的两种方式之间的区别:

int[]数组 int[]数组

有区别吗?


当前回答

它们完全相等。Int[]数组是首选样式。int array[]只是作为等效的c兼容样式提供。

其他回答

它们是一样的,但它们之间有一个重要的区别:

// 1.
int regular, array[];
// 2.
int[] regular, array;

在1。Regular只是一个int,而不是2。其中regular和array都是int类型的数组。

因此,你的第二种说法更可取,因为它更清楚。根据Oracle的本教程,第一种表单也不建议使用。

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

Int[]数组更可取,而且更容易混淆。

Java语言规范第10.2节:

[]可以作为类型的一部分出现在声明的开头,也可以作为特定变量的声明器的一部分出现,或者两者都有,如下例所示: 字节[]行向量,共向量,矩阵[]; 此声明等价于: 字节行向量[],共向量[],矩阵[][];

就我个人而言,我见过的几乎所有Java代码都使用第一种形式,这种形式更有意义,因为它将关于变量的所有类型信息保存在一个地方。说实话,我希望第二种形式被禁止……但生活就是这样……

幸运的是,我认为我从未见过这样的(有效的)代码:

String[] rectangular[] = new String[10][10];

不,这些是一样的。然而

byte[] rowvector, colvector, matrix[];

等价于:

byte rowvector[], colvector[], matrix[][];

摘自Java规范。这意味着

int a[],b;
int[] a,b;

是不同的。我不推荐这两种声明。最容易读的(可能)是:

int[] a;
int[] b;

虽然int integer[]解决方案植根于C语言(因此可以被认为是“正常的”方法),但许多人发现int[]整数更符合逻辑,因为它不允许在一个声明中创建不同类型的变量(即int和数组)(与C风格的声明相反)。