int[] array和int array[]的区别

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

  1. int[] array
  2. int array[]

有区别吗?

100002 次浏览

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

int[] array更可取,而且更容易混淆。

在Java中,这只是说同一件事的不同语法方法。

它们是一样的。其中一种(对某些人来说)比另一种更具可读性。

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

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

这两个命令是一样的。

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

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

有一个细微的区别,如果你碰巧在同一个声明中声明了多个变量:

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时捕捉到你的错误。

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

没有区别。

引用自太阳:

[]可以在声明的开头作为类型的一部分出现,也可以作为特定变量的声明器的一部分出现,或者两者都有,如下面的例子:byte[] rowvector, colvector, matrix[];

这个声明等价于: byte rowvector[], colvector[], matrix[][]; < / p >

没有区别。

我更喜欢type[] name格式,因为很明显变量是一个数组(更少寻找它是什么)。

编辑:

哦,等等,有区别(我忘记了,因为我从来没有一次声明一个以上的变量):

int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.

没有真正的区别;然而,

double[] items = new double[10];

首选,因为它清楚地表明类型是数组。

最优先的选项是int[] a -因为int[]是类型,而a是名称。 (你的第二个选项与此相同,空格错位)

它们在功能上没有区别。

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

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

不,这些是一样的。然而

byte[] rowvector, colvector, matrix[];

等价于:

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

取自Java规范。这意味着

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

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

int[] a;
int[] b;

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

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

两者的意思是一样的。然而,这些变量的存在也允许:

int[] a, b[];

也就是:

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

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

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

int[] integers;

因为它让任何阅读你代码的人都能一眼看出integers是一个int型数组,而不是

int integers[];

这并不是很明显,特别是当您在一行中有多个声明时。但同样,它们是相等的,所以这取决于个人偏好。

查看本页介绍Java中的数组以获得更深入的示例。

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

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

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

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

因此,你的第二种说法更可取,因为它更清楚。根据Oracle教程,第一种形式也是不鼓励的。

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

它是另一种形式,是从C借来的,java就是基于C

有趣的是,在java中有三个方法来定义有效的main方法:

  • public static void main(String[] args)
  • public static void main(String args[])
  • public static void main(String... args)

两者同样有效。然而,不鼓励使用int puzzle[]形式,根据代码编写约定int[] puzzle是首选。另见官方Java数组教程:

类似地,你可以声明其他类型的数组:

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

你也可以把方括号放在数组的名字后面:

float anArrayOfFloats[]; // this form is discouraged

然而,惯例不鼓励这种形式;括号标识数组类型,应该与类型名称一起出现。

注意最后一段。

我建议阅读官方的Sun/Oracle教程,而不是一些第三方的教程。否则,你可能最终会学到不好的做法。

Java语言规范第10.2节:

[]可以作为类型的一部分出现在声明的开头,也可以作为特定变量的声明器的一部分出现,或者两者都有,如下例所示:

 byte[] rowvector, colvector, matrix[];

此声明等价于:

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

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

幸运的是,我认为我没有看到这个(有效)代码:

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

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

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

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

注意,SonarQube将第二个情况视为次要的代码味道:

数组指示符“[]”应该在类型上,而不是变量上(squid:S1197)

数组指示器应该始终位于类型上,以便更好地编写代码 可读性。否则,开发人员必须同时查看类型和 变量名,知道变量是否为数组

不合规代码示例

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

兼容的解决方案

int[][] matrix;   // Compliant

是的,有区别。

int[] a = new int[100];// 'a'本身不是数组,数组存储为地址 在内存的其他地方,'a'只保存该地址

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