Есть ли разница между main (String args []) и main (String [] args)? - PullRequest
41 голосов
/ 14 мая 2011

Есть ли разница между:

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

и

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

Не верю, но мне интересно.

Ответы [ 9 ]

36 голосов
/ 14 мая 2011

Семантически они идентичны. Однако, я бы рекомендовал использовать последний синтаксис (String[] args) при объявлении массивов. Прежний синтаксис существует в основном для совместимости с синтаксисом Си.

Поскольку String[], в целом, является типом объекта в Java, более логично и понятно не разбивать его на части.

A аналогичный вопрос обращается к [] после списка аргументов метода.

5 голосов
/ 14 мая 2011

Нет никакой разницы, но использование скобок после типа (String[]) - более распространенная практика в Java.

4 голосов
/ 01 мая 2014

Оба они абсолютно одинаковы. Пожалуйста, обратитесь к Спецификации языка Java (JLS), чтобы увидеть синтаксис, используемый в Java.

String [] args или String args [] создаст массив (резервирует место в памяти) без аргументов размера и имени.

Let us Consider:

String [] x;

putting the [] after the name. Why? because it avoids subtle problems like this:-

String x [] , y; //x[] is an array but y is a String
String [] x y ; //two arrays x[] and y[] both
4 голосов
/ 14 мая 2011

Нет

Это всего лишь два стиля письма

1 голос
/ 14 мая 2011

Подпись метода такая же, поэтому нет никакой разницы.

Это открытый метод, он ничего не возвращает, имя метода "main" и принимает массив String.

0 голосов
/ 18 февраля 2015

Хотя оба они используются для создания массива типа String, но второй более популярен, потому что с этим вы можете создавать несколько массивов String одновременно ... E.g String[] a,b; Здесь вы создали два строковых массива a и b одновременно.

Тем не менее

String a[],b; создаст массив String "a" и строковую переменную (не массив) b .

Надеюсь, это прояснится.

0 голосов
/ 28 января 2015

есть разница: например, если вы пишете int [] arr;- здесь arr - ссылка на массив целых чисел, тогда как в случае int arr [];- arr является примитивным массивом типа int

0 голосов
/ 04 марта 2013

Разница между ними заключается в том, что когда мы пытаемся вызвать метод main вручную из одного класса в другой, используя статический синтаксис, мы используем "string [] s". В этот момент мы должны передать массив строкового типа в качестве аргумента в методе main. Когда мы используем «String ... s», тогда нет необходимости передавать какой-либо строковый массив в качестве аргумента. Он будет работать, и не имеет значения, передадите ли вы массив в качестве аргумента или нет (если вы не передаете его явно, он передается сам по себе) ... следовательно доказано /////////

0 голосов
/ 14 мая 2011

Неа.Нет никакой разницы между двумя.

См. Раздел Declaring a Variable to Refer to an Array в этом документе .Из этого документа

float anArrayOfFloats [];// эта форма не рекомендуется

, поэтому просто используйте второй стиль.

...