我最近一直在思考定义数组的两种方式之间的区别:
int[]数组 int[]数组
有区别吗?
我最近一直在思考定义数组的两种方式之间的区别:
int[]数组 int[]数组
有区别吗?
当前回答
有一个细微的区别,如果你碰巧在同一个声明中声明了多个变量:
int[] a, b; // Both a and b are arrays of type int
int c[], d; // WARNING: c is an array, but d is just a regular int
注意,这是一种糟糕的编码风格,尽管编译器几乎肯定会在您尝试使用d时捕捉到您的错误。
其他回答
两者的意思是一样的。然而,这些变量的存在也允许:
int[] a, b[];
也就是:
int[] a;
int[][] b;
然而,这是一种可怕的编码风格,不应该这样做。
在Java中,这只是说同一件事的不同语法方法。
Java语言规范第10.2节:
[]可以作为类型的一部分出现在声明的开头,也可以作为特定变量的声明器的一部分出现,或者两者都有,如下例所示: 字节[]行向量,共向量,矩阵[]; 此声明等价于: 字节行向量[],共向量[],矩阵[][];
就我个人而言,我见过的几乎所有Java代码都使用第一种形式,这种形式更有意义,因为它将关于变量的所有类型信息保存在一个地方。说实话,我希望第二种形式被禁止……但生活就是这样……
幸运的是,我认为我从未见过这样的(有效的)代码:
String[] rectangular[] = new String[10][10];
虽然int integer[]解决方案植根于C语言(因此可以被认为是“正常的”方法),但许多人发现int[]整数更符合逻辑,因为它不允许在一个声明中创建不同类型的变量(即int和数组)(与C风格的声明相反)。
在声明单个数组引用时,它们之间没有太大区别。所以下面两个声明是一样的。
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
当声明多个数组引用时,我们可以找到它们之间的区别。下面两句话的意思是一样的。事实上,这取决于程序员遵循哪一个。但是建议使用标准的Java表示法。
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references