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

int[]数组 int[]数组

有区别吗?


当前回答

最可取的选项是int[] a——因为int[]是类型,而a是名称。 (第二个选项与此相同,只是空格放错了位置)

它们在功能上没有区别。

其他回答

最可取的选项是int[] a——因为int[]是类型,而a是名称。 (第二个选项与此相同,只是空格放错了位置)

它们在功能上没有区别。

这两个命令是一样的。

你可以使用语法来声明多个对象:

int[] arrayOne, arrayTwo; //both arrays

int arrayOne[], intOne; //one array one int 

参见:http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

Java语言规范说:

The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example:

byte[] rowvector, colvector, matrix[];

This declaration is equivalent to:

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

因此,它们将产生完全相同的字节代码。

Java语言规范第10.2节:

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

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

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

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

两者之间没有任何区别;两者都声明一个int型数组。但是,前者是首选的,因为它将类型信息都保存在一个地方。后者只有在C/ c++程序员转向Java时才真正得到支持。