我正在阅读并面对我之前没有看到的主要方法的有趣外观。
之间有什么区别吗? public static void main(String[] args)
和
public static void main(String a[])
我认为应用其中任何一个都会给我相同的输出
public static void main(String a[]){
List <Integer> li = new ArrayList <Integer>();
ListIterator <Integer> liItr = null;
li.add(1);
li.add(2);
li.add(3);
li.add(4);
li.add(5);
li.add(6);
li.add(7);
liItr = li.listIterator();
System.out.println("Elemnets in forward direction");
while(liItr.hasNext()){
System.out.println(liItr.next());
}
System.out.println("Elements in backward direction");
while(liItr.hasPrevious()){
System.out.println(liItr.previous());
}
}
}
P.S。我认为自己是Java的初学者。如果有人可以强调给我一些解释,那就太好了
答案 0 :(得分:2)
来自http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.2
BTW,没有多少人意识到不幸此规则同时影响
[]
可能会显示为该类型的一部分 声明,或作为特定变量的声明者的一部分, 或两者兼而有之。例如:
byte[] rowvector...
此声明相当于:
byte rowvector[]...
Type
methodSignature
对,而不仅仅Type
variable
。像这样的东西
int giveMeArray()[]{
// ^^^^^^^^^^^^^ - method signature
return new int[10];
}
也是有效的Java代码。
无论如何,这种声明数组的方式如果你想创建那么有用......比方说2维和3维数组。而不是
int[][] arr2d;
int[][][] arr3d;
你可以写
int[][] arr2d, arr3d[];
// ^^-additional dimension
答案 1 :(得分:1)
不,没有区别。唯一的差异是数组声明:
String[] args
VS
String a[]
两者都有效。
来自Java Language Specification. Chapter 10. Arrays. 10.2. Array Variables.(强调我的):
例10.2-1。数组变量的声明
int[] ai; // array of int short[][] as; // array of array of short short s, // scalar short aas[][]; // array of array of short Object[] ao, // array of Object otherAo; // array of Object Collection<?>[] ca; // array of Collection of unknown type
[]
可能会在声明开头作为类型的一部分出现,也可能作为特定变量声明者的一部分,或两者兼而有之。例如:
byte[] rowvector, colvector, matrix[];
此声明相当于:
byte rowvector[], colvector[], matrix[][];
答案 2 :(得分:1)
没有差别。另请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html,其中说明了这一点:“您也可以将括号放在数组的名称之后:”,但建议它是错误的形式。
答案 3 :(得分:0)
String[] args
与String args[]
和String a[]
一样有效。
Java 没有限制参数命名并授权两种样式的数组声明语法(括号在变量名之前或之后)=&gt;味道很重要。