Java int[]数组和int数组[]之间的差异
最近我一直在考虑定义数组的两种方法之间的区别:Java int[]数组和int数组[]之间的差异,java,arrays,Java,Arrays,最近我一直在考虑定义数组的两种方法之间的区别: int[]数组 int数组[] 有区别吗?它们在语义上是相同的。添加intarray[]语法只是为了帮助C程序员习惯java int[]array更可取,也更容易混淆。在Java中,这些只是表示相同内容的不同语法方法。它们是相同的。一个比另一个可读性更强。它们完全相同int[]数组是首选样式int-array[]只是作为等效的、与C兼容的样式提供的。没有区别,但Sun建议将其放在所解释的类型旁边。这两个命令是相同的 您可以使用以下语法声明多个对象:
int[]数组
int数组[]
有区别吗?它们在语义上是相同的。添加
intarray[]
语法只是为了帮助C程序员习惯java
int[]array
更可取,也更容易混淆。在Java中,这些只是表示相同内容的不同语法方法。它们是相同的。一个比另一个可读性更强。它们完全相同<代码>int[]数组是首选样式int-array[]
只是作为等效的、与C兼容的样式提供的。没有区别,但Sun建议将其放在所解释的类型旁边。这两个命令是相同的
您可以使用以下语法声明多个对象:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one 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
s的数组。然而,前者是首选的,因为它将类型信息保存在一个地方。后者只有在C/C++程序员转向Java时才得到真正的支持。没有区别。
引述自:
[]
可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明符的一部分出现,或者两者都出现,如本例所示:字节[]行向量、列向量、矩阵[]代码>
本声明相当于:
字节行向量[]、列向量[]、矩阵[]代码>
没有区别
我更喜欢的是type[]name
格式,因为很明显变量是一个数组(不必四处寻找它是什么)
编辑:
哦,等等,有一点不同(我忘了,因为我一次声明的变量从来不止一个):
没有真正的区别;但是,
double[] items = new double[10];
首选,因为它清楚地表明类型是数组。最首选的选项是int[]a
——因为int[]
是类型,a
是名称。
(您的第二个选项与此相同,但空间错位)
从功能上讲,它们之间没有区别。
因此,它们将产生完全相同的字节码。不,它们是相同的。然而
byte[] rowvector, colvector, matrix[];
相当于:
byte rowvector[], colvector[], matrix[][];
byte rowvector[], colvector[], matrix[][];
摘自。也就是说
int a[],b;
int[] a,b;
它们是不同的。我不推荐这两种声明中的任何一种。最容易阅读的内容可能是:
两种声明样式在功能上没有区别。两者都声明int的数组
但是int[]a
将类型信息保存在一起,而且更详细,所以我更喜欢它。两者的含义相同。然而,这些变体的存在也允许:
int[] a, b[];
这与:
int[] a;
int[][] b;
然而,这是一种可怕的编码风格,永远不应该这样做。是的,完全一样。就我个人而言,我更喜欢
int[] integers;
因为它使任何阅读您的代码的人都能立即明白,整数是int的数组,而不是int
int integers[];
这并没有让一切变得那么明显,特别是当您在一行中有多个声明时。但同样,它们是等价的,所以归根结底是个人偏好
查看更深入的示例。两者都可以。我建议挑一个,坚持下去。(我做第二个)它们是一样的,但是这些陈述之间有一个重要的区别:
// 1.
int regular, array[];
// 2.
int[] regular, array;
在1。正则表达式只是一个int,而不是2。其中正则和数组都是int的数组
因此,您的第二个陈述更可取,因为它更清楚。第一种形式也不鼓励使用。虽然int integers[]
解决方案源于C语言(因此可以被视为“正常”方法),但许多人发现int[]integers
更符合逻辑,因为它不允许在一个声明中创建不同类型的变量(即int和数组)(与C风格的声明相反)。它是另一种形式,是从java所基于的C
借用而来的
好奇的是,有三种方法可以在java中定义有效的main
方法:
publicstaticvoidmain(字符串[]args)
publicstaticvoidmain(字符串args[])
publicstaticvoidmain(字符串…参数)
两者都同样有效。但是不鼓励使用int-puzzle[]
形式,根据标准,首选int[]puzzle
。另见官方:
类似地,您可以声明其他类型的数组:
byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;
也可以将方括号放在数组名称之后:
float anArrayOfFloats[]; // this form is discouraged
但是,惯例不鼓励使用这种形式;括号用于标识阵列类型,并应与类型名称一起出现
注意最后一段
我建议您阅读Sun/Oracle官方教程,而不是一些第三方教程。否则,您可能会学习到一些不好的做法。来自:
[]可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明器的一部分出现,或者两者都出现,如本例所示:
byte[] rowvector, colvector, matrix[];
本声明相当于:
byte rowvector[], colvector[], matrix[][];
byte rowvector[], colvector[], matrix[][];
就我个人而言,我所见过的几乎所有Java代码都使用第一种形式,将变量的所有类型信息保存在一个地方更为合理。老实说,我希望第二种形式不被允许……但这就是生活
幸运的是,我认为我从未见过以下(有效)代码:
申报时
byte rowvector[], colvector[], matrix[][];
String[] rectangular[] = new String[10][10];
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references
int matrix[][]; // Noncompliant
int[] matrix[]; // Noncompliant
int[][] matrix; // Compliant