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

int[]数组 int[]数组

有区别吗?


当前回答

没有区别。

引用孙杨的话:

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

其他回答

如前所述,没有太大区别(如果每行只声明一个变量)。

请注意,SonarQube将你的第二个情况视为一个次要的代码气味:

数组指示符“[]”应该在类型上,而不是变量上(squid:S1197) 数组指示符应该始终位于类型上,以便更好地编写代码 可读性。否则,开发人员必须同时查看类型和 变量名,以了解变量是否为数组。 不合规代码示例 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 = new Int [100];// 'a'本身不是数组,数组存储为地址 在内存的其他地方,'a'只保存该地址

Int b[] = new Int [100];//当创建像cleary这样的数组时,显示'b'是一个数组,并且它 整数类型。

这两种类型的声明在功能上没有区别。两者都声明数组为int。

但是int[] a将类型信息保存在一起,更详细,所以我更喜欢它。

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