Недавно я думал о разнице между двумя способами определения массива:
int[] array
int array[]
Есть ли разница?
Они семантически идентичны. int array[]
Синтаксис был добавлен только программистам помощи C привыкает к Java.
int[] array
гораздо предпочтительнее и менее запутанным.
int array[]
синтаксис. Также логично ... в некотором роде. :)int array[]
имеет больше смысла для меня. Что вы думаете об этой декларации?int[] x, y
? Этоy
массив или нет? Может быть, а может и нет. Только гуру Java могут ответить с уверенностью ....int[] x, y
,y
является массивом (потому что[]
принадлежит типу), а в случаеint x[], y
,y
не является массивом ([]
принадлежит переменной).Есть одно небольшое отличие, если вы объявляете более одной переменной в одном объявлении:
Обратите внимание, что это плохой стиль кодирования, хотя компилятор почти наверняка поймает вашу ошибку в тот момент, когда вы попытаетесь его использовать
d
.источник
Нет никакой разницы.
Я предпочитаю
type[] name
формат в это ясно, что переменная является массивом (меньше оглядываясь, чтобы выяснить, что это такое).РЕДАКТИРОВАТЬ:
Ой, подождите, есть разница (я забыл, потому что я никогда не объявляю более одной переменной одновременно):
источник
Нет, это одно и то же. тем не мение
эквивалентно:
Взято из спецификации Java . Что означает, что
разные. Я бы не рекомендовал ни одну из этих многочисленных деклараций. Легче всего читать (вероятно):
источник
Из раздела 10.2 Спецификации языка Java :
Лично почти весь код Java, который я когда-либо видел, использует первую форму, которая имеет больше смысла, храня всю информацию о типе переменной в одном месте. Хотелось бы, чтобы второй класс был запрещен, если честно ... но такова жизнь ...
К счастью, я не думаю, что когда- либо видел этот (действительный) код:
источник
int[] a[];
- это никогда не будет неясным ;-)Две команды - это одно и то же.
Вы можете использовать синтаксис для объявления нескольких объектов:
см .: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
источник
Нет разницы.
Цитата из Солнца :
источник
Там нет никакой разницы между ними; оба объявляют массив
int
s. Тем не менее, первое предпочтительнее, поскольку оно хранит информацию о типе в одном месте. Последнее действительно поддерживается только для программистов на C / C ++, переходящих на Java.источник
Здесь нет никакой разницы; тем не мение,
является предпочтительным, так как он четко указывает, что тип является массивом.
источник
Оба одинаково действительны.
int puzzle[]
Форма , однако не рекомендуется, тоint[] puzzle
является предпочтительной , в соответствии с кодирующей конвенцией . Смотрите также официальный учебник по массивам Java :Обратите внимание на последний абзац.
Я рекомендую читать официальные руководства Sun / Oracle, а не некоторые сторонние. В противном случае вы рискуете получить плохую практику.
источник
Это альтернативная форма, которая была заимствована
C
, на которой основана Java.Любопытно, что есть три способа определения допустимого
main
метода в Java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
источник
public static void main ( String \u005B \u005D args )
, это тоже другой вариант.String... param
, является массивом, then why it is not possible to call a method like say
someMethod (1, 2) `если определеноsomeMethod
какsomeMethod ( int[] numbers )
. Массивы требуют, чтобы аргумент был из смежной области памяти, однакоvarargs
сначала он будет создавать массив из предоставленных аргументов. Более того, avarargs
может быть только последним аргументом метода, хотя это не так для массива.meth(int... a)
можно называть либо либо,meth(1, 2)
либоmeth(new int[] {1, 2})
. Varargs - это синтаксический сахар, который превращает первую версию во вторую. Фактический (байт-код) тип параметра является типом массива. Что касается того, чтобы быть последним, если вы думаете об этом, другого разумного выбора нет.Там нет никакой разницы, но Sun рекомендует поставить его рядом с типом, как описано здесь
источник
Наиболее предпочтительный вариант
int[] a
- потому чтоint[]
это тип, аa
это имя. (ваш второй вариант такой же, как этот, с неуместным пространством)Функционально между ними нет разницы.
источник
Спецификация языка Java говорит:
Таким образом, они приведут к абсолютно одинаковому байт-коду.
источник
В Java это просто разные синтаксические способы сказать одно и то же.
источник
Они одинаковые. Один является более читабельным (для некоторых), чем другой.
источник
Они полностью эквивалентны.
int [] array
это предпочтительный стиль.int array[]
просто предоставляется в качестве эквивалентного C-совместимого стиля.источник
Оба имеют одинаковое значение. Однако наличие этих вариантов также позволяет это:
что так же, как:
Тем не менее, это ужасный стиль кодирования и никогда не должно быть сделано.
источник
Нет никакой разницы в функциональности между обоими стилями объявления. Оба объявляют массив int.
Но
int[] a
хранит информацию о типах вместе и является более многословной, поэтому я предпочитаю ее.источник
Они одинаковы, но между этими утверждениями есть важное различие:
в 1. регулярный - просто целое число, в отличие от 2. где регулярный и массив - это массивы целых чисел.
Поэтому второе утверждение, которое вы имеете, является предпочтительным, поскольку оно более понятно. Первая форма также не рекомендуется в соответствии с этим руководством по Oracle .
источник
Как уже говорилось, нет большой разницы (если вы объявляете только одну переменную на строку).
Обратите внимание, что SonarQube рассматривает ваш второй случай как незначительный запах кода:
источник
Да, точно так же. Лично я предпочитаю
потому что для любого читающего ваш код сразу становится очевидным, что целые числа - это массив целых чисел, а не
что не делает все это очевидным, особенно если у вас есть несколько объявлений в одной строке. Но опять же, они эквивалентны, так что все сводится к личным предпочтениям.
Проверьте эту страницу о массивах в Java для более подробных примеров.
источник
при объявлении ссылки на один массив между ними нет большой разницы. поэтому следующие два объявления одинаковы.
при объявлении нескольких ссылок на массивы мы можем найти разницу между ними. следующие два утверждения означают то же самое. на самом деле, это зависит от программиста, который следует. но стандартная нотация Java рекомендуется.
источник
Оба в порядке. Я предлагаю выбрать один и придерживаться его. (Я делаю второй)
источник
Хотя
int integers[]
решение коренится в языке C (и, таким образом, его можно считать «нормальным» подходом), многие люди находятint[] integers
более логичным, так как оно не позволяет создавать переменные разных типов (например, int и массив) в одном объявлении (в отличие от декларация в стиле C).источник