int[]数组和int array[]之间的差异

35g0bw71  于 2021-07-12  发布在  Java
关注(0)|答案(25)|浏览(595)

我最近一直在思考定义数组的两种方法之间的区别:
int[] array int array[] 有区别吗?

eeq64g8w

eeq64g8w1#

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

sbdsn5lh

sbdsn5lh2#

两个都可以。我建议你选一个,坚持下去(我做第二个)

h5qlskok

h5qlskok3#

声明单个数组引用时,它们之间没有太大区别。所以下面两个声明是相同的。

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
dba5bblo

dba5bblo4#

是的,完全一样。就我个人而言,我更喜欢

int[] integers;

因为它使任何阅读你的代码的人都能立即明白,整数是int的数组,而不是

int integers[];

但这并不是很明显,尤其是在一行中有多个声明的情况下。但同样,它们是等价的,所以归根结底是个人喜好。
查看java中数组的这一页,以获得更深入的示例。

balp4ylt

balp4ylt5#

如前所述,没有太大区别(如果每行只声明一个变量)。
请注意,sonarqube将第二种情况视为轻微的代码气味:
数组指示符“[]”应该在类型上,而不是变量上(squid:s1197)
数组指示符应始终位于类型上,以提高代码可读性。否则,开发人员必须同时查看类型和变量名才能知道变量是否是数组。
不符合代码示例

int matrix[][];   // Noncompliant
int[] matrix[];   // Noncompliant

合规解决方案

int[][] matrix;   // Compliant
uqxowvwt

uqxowvwt6#

它们是相同的,但是这些陈述之间有一个重要的区别:

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

在1。regular只是一个int,而不是2。其中正则和数组都是int的数组。
因此,你的第二句话更可取,因为它更清楚。根据这篇关于oracle的教程,也不鼓励使用第一种形式。

7d7tgy0s

7d7tgy0s7#

两种声明样式在功能上没有区别。两者都声明int的数组。
但是 int[] a 将类型信息放在一起,而且更详细,所以我更喜欢它。

kuuvgm7e

kuuvgm7e8#

两者含义相同。然而,这些变体的存在也允许:

int[] a, b[];

与以下内容相同:

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

然而,这是可怕的编码风格,永远不应该这样做。

um6iljoc

um6iljoc9#

它们是完全等价的。 int [] array 是首选样式。 int array[] 只是作为一个等价的、与c兼容的样式提供。

eanckbw9

eanckbw910#

他们是一样的。一个比另一个更易读(对某些人来说)。

b1uwtaje

b1uwtaje11#

最好的选择是 int[] a -因为 int[] 是类型,并且 a 是名字(您的第二个选项与此相同,但空间放错了位置)
在功能上它们之间没有区别。

rbl8hiat

rbl8hiat12#

在java中,这些只是表示同一事物的不同语法方法。

3mpgtkmj

3mpgtkmj13#

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[][];

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

uqdfh47h

uqdfh47h14#

它们在语义上是相同的。这个 int array[] 添加语法只是为了帮助c程序员习惯java。 int[] array 更可取,更容易混淆。

k10s72fa

k10s72fa15#

没有区别,但是sun建议将它放在这里解释的类型旁边

相关问题