2015-01-04 3 views
-4

Рассмотрим два способа объявить переменную типа массив в Java:Массивы концепция JAVA

1) Синтаксис: dataType[] arrayRefVar;

Пример:

double[] myList; 

2) Синтаксис: dataType arrayRefVar[];

Пример:

double myList[]; 

Почему первый синтаксис предпочтительнее второго?

+0

в зависимости от того, что более читаемо для вас и ваших коллег-кодеров. Отсутствие различий в поведении/производительности, кроме удобочитаемости. –

+0

@JunedAhsan: Ну, в зависимости от того, что вам больше всего читается * и всем, кто читает ваш код *. –

+0

формат содержимого согласно рекомендациям проводки. – askb

ответ

0

Они 100% функционально идентичны, но первая форма не допускается в C или C++, и это легче сказать, что это массив (на мой взгляд)

int[] a; // <-- not valid in C (or C++) 
+0

Что вы подразумеваете под термином "only legal in Java"? Это законно и на других языках, и оба являются законными в Java ... –

+0

@JonSkeet Edited. Читайте лучше? Я пытался сказать, что это не легальный C или C++. –

+0

Я предлагаю вам точно сказать, что тогда - учитывая, сколько языков есть, в том числе и неясных, я сильно подозреваю, что Java не был первым языком, когда-либо использующим 'Foo []' для массива элементов Foo. –

2

В первом примере, все информация о типе находится в одном месте - тип переменной - «массив dataType», так это то, что говорит dataType[].

Почему у вас есть два аспекта информации о типе в разных местах - один с именем типа элемента и один с переменной?

Обратите внимание, что вы можете сделать действительно запутанные вещи:

int[] x[]; // Equivalent to int[][] x 

и

int foo()[] // Equivalent to int[] foo() 

Ик!

Также обратите внимание, что синтаксис массива ближе к обобщенному синтаксису, если позже вы захотите использовать тип коллекции вместо массива. Например:

String[] foo 

к

List<String> foo 

В принципе, синтаксис int foo[] был включен только в Java, чтобы сделать его более похожим C и C++. Лично я считаю, что это было ошибкой - она ​​никогда не может быть удален из языка в настоящее время, несмотря на то, что он сильно обескуражен :(

0

Там нет никакой разницы, его просто предпочтение письма пришли из C и C++ языков

.

Посмотрите на JLS на массивы:.

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