Ответ 1
Как объявить метод main() в Java?
String[]
и String...
- одно и то же внутренне, т.е. е. массив строк.
Разница в том, что при использовании параметра varargs (String...
) вы можете вызвать метод, например:
public void myMethod( String... foo ) {
// do something
// foo is an array (String[]) internally
System.out.println( foo[0] );
}
myMethod( "a", "b", "c" );
// OR
myMethod( new String[]{ "a", "b", "c" } );
// OR without passing any args
myMethod();
И когда вы объявляете параметр как массив String, вы MUST вызываете этот путь:
public void myMethod( String[] foo ) {
// do something
System.out.println( foo[0] );
}
// compilation error!!!
myMethod( "a", "b", "c" );
// compilation error too!!!
myMethod();
// now, just this works
myMethod( new String[]{ "a", "b", "c" } );
На самом деле разница между
String[]
иString
... если есть?
Соглашение состоит в том, чтобы использовать String[]
в качестве основного параметра метода, но использование String...
тоже работает, поскольку, когда вы используете varargs, вы можете вызывать метод таким же образом, как вы вызываете метод с массивом как параметром, и сам параметр будет массивом внутри тела метода.
Важно то, что когда вы используете vararg, он должен быть последним параметром метода, и вы можете иметь только один параметр vararg.
Подробнее о varargs вы можете прочитать здесь: http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html