我最近一直在考虑定义数组的两种方法之间的区别:
int[] array
int array[]
有区别吗?
它们在语义上是相同的.该int array[]
只添加语法来帮助C程序员习惯的Java.
int[] array
是更可取的,而且不那么令人困惑.
如果您碰巧在同一声明中声明了多个变量,则会有一点不同:
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
.
没有区别.
我更喜欢type[] name
格式是显而易见的是变量是一个数组(少看看它是什么).
编辑:
哦等等有区别(我忘了,因为我从来没有一次声明多个变量):
int[] foo, bar; // both are arrays int foo[], bar; // foo is an array, bar is an int.
不,这些都是一样的.然而
byte[] rowvector, colvector, matrix[];
相当于:
byte rowvector[], colvector[], matrix[][];
取自Java规范.这意味着
int a[],b; int[] a,b;
是不同的.我不会推荐这些多个声明中的任何一个.最容易阅读(可能)是:
int[] a; int[] b;
从Java语言规范的10.2节:
[]可能在声明开头作为类型的一部分出现,或作为特定变量的声明者的一部分出现,或者两者都出现,如下例所示:
byte[] rowvector, colvector, matrix[];该声明相当于:
byte rowvector[], colvector[], matrix[][];
就我个人而言,几乎所有我见过的Java代码都使用了第一种形式,通过将变量的所有类型信息保存在一个地方更有意义.我希望第二种形式不被允许,说实话......但这就是生活......
还好我不认为我曾经见过这个(有效)的代码:
String[] rectangular[] = new String[10][10];
这两个命令是一回事.
您可以使用语法声明多个对象:
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
没有不同.
引自太阳报:
它
[]
可以作为声明开头的类型的一部分出现,也可以作为特定变量的声明者的一部分出现,或者两者兼而有之,如下例所示:byte[] rowvector, colvector, matrix[];
该声明相当于:
byte rowvector[], colvector[], matrix[][];
两者之间没有任何区别; 两者都声明了一个int
s 数组.但是,前者是优选的,因为它将类型信息保存在一个地方.后者只是真正支持C/C++程序员转向Java的好处.
没有真正的区别; 然而,
double[] items = new double[10];
是优选的,因为它清楚地表明该类型是一个数组.
两者都同样有效.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教程,而不是一些第三方教程.否则你最终会冒险学习不良做法.
它是一种替代形式,它借鉴了C
java所基于的形式.
作为一种好奇心,有三种方法可以main
在java中定义一个有效的方法:
public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
没有区别,但Sun建议将其放在此处所述的类型旁边