Каков правильный синтаксис параметров метода main () Java? - PullRequest
5 голосов
/ 03 ноября 2010

Есть ли функциональная разница между этими методами?

public static void main(String[] args) { }

public static void main(String args[]) { }

РЕДАКТИРОВАТЬ (добавлен этот синтаксис от других участников):

public static void main(String... args) { }

Ответы [ 9 ]

13 голосов
/ 03 ноября 2010

Нет, но первым является предпочтительный стиль.

Edit: Другой вариант -

public static void main(String... args)

, что дополнительно позволяет вызывающим абонентам использовать синтаксис varargs.

10 голосов
/ 03 ноября 2010

Различные записи массива

Запись

String args[]

- это просто удобство для программистов на C, но она идентична этой записи:

String[] args

Вот чтоВ Sun Java Tutorial написано:

Вы также можете поставить квадратные скобки после имени массива:

float anArrayOfFloats[]; // this form is discouraged

Однако соглашение не поощряет эту форму;скобки обозначают тип массива и должны отображаться с обозначением типа.

Ссылка: Учебное пособие по Java> Массивы

VarArgs

Кстати, менее известный факт состоит в том, что основные методы также поддерживают varargs, поэтому это тоже нормально:

public static void main(String ... args) { }

Причина в том, что метод varargs внутренне идентичен методу, который поддерживает одинпараметр массива указанного типа. Например, он не скомпилируется:

public static void main(final String... parameters){}
public static void main(final String[] parameters){}
// compiler error: Duplicate method main(String[])

Ссылка: Учебник Java> Произвольное количество аргументов

7 голосов
/ 03 ноября 2010

Другие ответы верны в том смысле, что это не имеет значения.Позвольте мне просто добавить еще два пункта:

String ... args также действует и в этом случае снова не имеет значения.

Различные варианты размещения скобок имеют значение, когда выопределить несколько переменных.В следующем примере переменная a не является массивом строк, но b является единицей, а c является массивом массивов строк.

String a, b[], c[][];

ОднакоЯ должен предложить не использовать этот стиль для вашего кода, так как он может очень быстро запутать.Например, String [] b, c[]; означает то же самое для b и c, как указано выше, но особенно для c это неочевидно.

7 голосов
/ 03 ноября 2010

Разницы нет, но первая соответствует стандарту.

6 голосов
/ 03 ноября 2010

Нет, они не имеют разницы. Хотя ... Я использовал второй способ, пока моя девушка не угрожала сломаться, если я продолжу это делать (не шучу). Так что теперь я предпочитаю первый способ, и я думаю, что он выглядит намного лучше.

4 голосов
/ 03 ноября 2010

Нет, вышесказанное эквивалентно. Массивы в Java могут быть объявлены одним из двух способов:

String[] myarray;

или

String myarray[];
2 голосов
/ 03 ноября 2010

Я также предпочитаю пометить args как final.

public static void main(final String[] args) { }
2 голосов
/ 03 ноября 2010

Используйте String [] вместо использования [] постфикса для ссылки.Infact String [] obj;подчеркивает тот факт, что obj является ссылкой типа String [] (массив String).

0 голосов
/ 13 августа 2016

Нет разницы между двумя вариантами, которые вы можете сделать одним из них.

Вы также можете указать это:

public static void main(String... args) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...