Есть ли какое-либо различие между “Объектом [] x” и “Объектом x []”?

Я обновлял основу унаследованного кода в Java, и я нашел строку как это:

Object arg[] = { new Integer(20), new Integer(22) };

Та строка привлекла мое внимание, потому что я привык к этому виду кода:

Object[] arg = { new Integer(20), new Integer(22) };

Содержание массива не важно здесь. Мне любопытно на предмет скобок рядом с именем переменной по сравнению со скобками рядом с именем класса. Я попробовал в Eclipse (с Java 5), и обе строки допустимы для компилятора.

Есть ли какое-либо различие между теми объявлениями?

8
задан animuson 4 January 2013 в 07:24
поделиться

5 ответов

И законны и обе работы. Но рекомендуется поместить [] перед именем массива.

Из Javadocs :

Можно также заключить квадратные скобки после имени массива:

float anArrayOfFloats[]; // this form is discouraged

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

15
ответ дан 5 December 2019 в 05:08
поделиться

Нет, они оба работают. Но обратите внимание:

float anArrayOfFloats[], aSecondVariable;

объявит один массив флотов и один флот, в то время как:

float[] anArrayOfFloats, aSecondVariable;

объявит два массива флотов.

14
ответ дан 5 December 2019 в 05:08
поделиться

Разницы нет. Оба являются законными.

Можно прочитать в спецификации языка Java http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

[]. [] Может отображаться как часть типа в начале декларации, или как часть декларации для конкретной переменной или и той, и другой, как в пример:

 байт [] rowvvector, colvector, matrix [];
4
ответ дан 5 December 2019 в 05:08
поделиться

Еще одна веская причина для записи Integer[] ints вместо Integer ints[] связана с отношениями наследования: Integer[] является подтипом Number[] является подтипом Object[].

Другими словами, вы можете поместить Integers в массив Object, таким образом, вы можете думать о [] как о части определения типа объекта -- поэтому имеет смысл, чтобы он был близок к типу, а не к имени объекта.

1
ответ дан 5 December 2019 в 05:08
поделиться

Краткий ответ: №

0
ответ дан 5 December 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: