2014-10-03 4 views
0

ПРИМЕЧАНИЕ: этот вопрос ранее был отмечен как дубликат. Это тонко отличается, однако: other question спросил, какая разница между двумя синтаксисами; тогда как я знаю, что нет разницы в значении, и я спрашиваю в этом случае, почему Java допускает оба.Почему Java допускает как int x [], так и int [] x?

Почему Java позволяет как

int x[]; 

и

int[] x; 

, когда я объявляю массив?

Последнее делает гораздо больше смысла: переменная называется x, не x[], и его тип int[], не int. Почему бы просто не навязать это? Разрешить два разных синтаксиса просто пригласить путаницу и непоследовательность. Он даже, кажется, чтобы сделать возможным объявить двумерный массив в качестве

int[] x[]; 

который граничащей с нечитаемыми.

Это что-то заимствованное из C? (Почему C так делал так?)

+0

@ user3386109 Прочитать последний абзац. –

+0

Да, я просто сделал. C этого не допускает. – user3386109

+0

C делает это так, потому что 'x [i]' '' int'. – user58697

ответ

2

По крайней мере, из спецификации нет явной причины существования обоих. Однако, как следует, оба способа обеспечивают определенную гибкость. С одной переменной оба объявления предоставят вам массив int.

х и у являются массивы, когда:

int[] x, y; 

х представляет собой массив, а не тогда, когда у:

int x[], y; 

Смотри также Oracle Java7 reference. Они также говорят, что смешанная нотация не рекомендуется делать в следующем примере:

float[][] f[][], g[][][], h[]; // Yechh! 
2

Он был добавлен, чтобы помочь программистам C привыкнуть к Java.

В Java int[] x; является предпочтительным способом.

+6

OK. Кажется, плохая идея помочь программистам C привыкнуть к Java, помогая им писать плохой Java ... –

+0

Я согласен, но это Java. ;) – nana

+0

@ chiastic-security. Поскольку путь C следует за использованием, а предпочитаемый Java способ - нет, я думаю, что все наоборот. – o11c

Смежные вопросы