Разница между массивом int[] и массивом int[]
Вопрос
Недавно я думал о разнице между двумя способами определения массива:
int[] array
int array[]
Есть ли разница?
Решение
Они семантически идентичны.А int array[]
Синтаксис был добавлен только для того, чтобы помочь программистам C привыкнуть к Java.
int[] array
гораздо предпочтительнее и менее запутанно.
Другие советы
Есть одно небольшое отличие, если вам случится объявить более одной переменной в одном объявлении:
int[] a, b; // Both a and b are arrays of type int
int c[], d; // WARNING: c is an array, but d is just a regular int
Обратите внимание, что это плохой стиль кодирования, хотя компилятор почти наверняка уловит вашу ошибку в тот момент, когда вы попытаетесь использовать d
.
Нет никакой разницы.
Я предпочитаю type[] name
В формате ясно, что переменная представляет собой массив (меньше оглядываться по сторонам, чтобы узнать, что это такое).
РЕДАКТИРОВАТЬ:
Ой, подождите, есть разница (я забыл, потому что никогда не объявляю более одной переменной одновременно):
int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.
Нет, это одно и то же.Однако
byte[] rowvector, colvector, matrix[];
эквивалентно:
byte rowvector[], colvector[], matrix[][];
Взято из Спецификация Java.Что означает, что
int a[],b;
int[] a,b;
разные.Я бы не рекомендовал ни одно из этих многочисленных объявлений.Легче всего читать (вероятно):
int[] a;
int[] b;
От раздел 10.2 спецификации языка Java:
[] может появиться как часть типа в начале объявления или как часть декларатора для конкретной переменной, или и то, и другое, как в этом примере:
byte[] rowvector, colvector, matrix[];
Это объявление эквивалентно:
byte rowvector[], colvector[], matrix[][];
Лично почти все код Java, который я когда-либо видел, использует первую форму, что имеет больше смысла, поскольку вся информация о типе переменной хранится в одном месте.Честно говоря, мне бы хотелось, чтобы вторую форму запретили...но такова жизнь...
К счастью, я не думаю, что у меня есть всегда видел этот (действительный) код:
String[] rectangular[] = new String[10][10];
Эти две команды — одно и то же.
Вы можете использовать синтаксис для объявления нескольких объектов:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
видеть: http://java.sun.com/docs/books/jls/ Second_edition/html/arrays.doc.html
Нет разницы.
Цитата из Солнце:
А
[]
может появиться как часть типа в начале объявления или как часть декларатора для конкретной переменной, или и то, и другое, как в этом примере:byte[] rowvector, colvector, matrix[];
Это объявление эквивалентно:
byte rowvector[], colvector[], matrix[][];
Между ними нет никакой разницы;оба объявляют массив int
с.Однако первый вариант предпочтительнее, поскольку он хранит всю информацию о типе в одном месте.Последнее действительно поддерживается только для программистов C/C++, переходящих на Java.
Реальной разницы нет;однако,
double[] items = new double[10];
предпочтительнее, поскольку ясно указывает, что тип является массивом.
Оба одинаково действительны.А int puzzle[]
форма, однако, не рекомендуется, int[] puzzle
является предпочтительным в соответствии с соглашения о кодировании.Смотрите также официальный Учебное пособие по массивам Java:
Аналогично можно объявить массивы других типов:
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;
Вы также можете поставить квадратные скобки после имени массива:
float anArrayOfFloats[]; // this form is discouraged
Однако условности не одобряют эту форму;скобки идентифицируют тип массива и должны отображаться вместе с обозначением типа.
Обратите внимание на последний абзац.
Я рекомендую читать официальные руководства Sun/Oracle, а не сторонние руководства.В противном случае вы рискуете научиться плохим практикам.
Это альтернативная форма, заимствованная из C
, на котором основана Java.
В качестве любопытства есть три способы определения действительного main
метод в Java:
public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
Разницы нет, но Sun рекомендует указывать ее рядом с типом, как описано. здесь
Наиболее предпочтительным вариантом является int[] a
- потому что int[]
это тип и a
это имя.(ваш второй вариант такой же, но с неуместным пробелом)
Функционально разницы между ними нет.
А Спецификация языка Java говорит:
The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example:
byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
byte rowvector[], colvector[], matrix[][];
Таким образом, они приведут к точно такому же байтовому коду.
В Java это просто разные синтаксические способы сказать одно и то же.
Они такие же.Один более читаем (для некоторых), чем другой.
Они полностью эквивалентны. int [] array
является предпочтительным стилем. int array[]
просто предоставляется как эквивалентный C-совместимый стиль.
Оба имеют одно и то же значение.Однако существование этих вариантов позволяет и это:
int[] a, b[];
что то же самое, что:
int[] a;
int[][] b;
Однако это ужасный стиль кодирования, и его никогда не следует делать.
Между обоими стилями объявления нет разницы в функциональности.Оба объявляют массив int.
Но int[] a
хранит информацию о типах вместе и является более подробным, поэтому я предпочитаю его.
Они одинаковы, но между этими утверждениями есть важное различие:
// 1.
int regular, array[];
// 2.
int[] regular, array;
в 1.Regular — это просто целое число, а не 2.где и обычный, и массив представляют собой массивы целых чисел.
Поэтому второе утверждение, которое у вас есть, предпочтительнее, поскольку оно более ясно.Первая форма также не рекомендуется согласно это руководство по Oracle.
Как уже говорилось, особой разницы нет (если вы объявляете только одну переменную в строке).
Обратите внимание, что СонарКуб рассматривает ваше второе дело как несовершеннолетнее код запах:
Обозначения массива «[]» должны относиться к типу, а не к переменной (squid:S1197).
Устройства массива всегда должны быть расположены на типе для лучшей читаемости кода.В противном случае разработчики должны смотреть как на тип, так и на имя переменной, чтобы узнать, является ли переменная массивом.
Пример несовместимого кода
int matrix[][]; // Noncompliant int[] matrix[]; // Noncompliant
Соответствующее решение
int[][] matrix; // Compliant
Да, точно так же.Лично я предпочитаю
int[] integers;
потому что для любого, кто читает ваш код, сразу становится очевидным, что целые числа представляют собой массив целых чисел, а не
int integers[];
что не делает все таким очевидным, особенно если у вас несколько объявлений в одной строке.Но опять же, они эквивалентны, так что все зависит от личных предпочтений.
Проверить эта страница о массивах в Java для более подробных примеров.
при объявлении одной ссылки на массив между ними нет большой разницы.поэтому следующие два объявления одинаковы.
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
при объявлении нескольких ссылок на массив мы можем найти разницу между ними.следующие два утверждения означают одно и то же.на самом деле, выбор того, кому следовать, зависит от программиста.но рекомендуется использовать стандартную нотацию Java.
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references
Оба в порядке.Я предлагаю выбрать один и придерживаться его.(я делаю второй)
В то время int integers[]
корни решения лежат в языке C (и поэтому его можно считать «нормальным» подходом), многие люди находят int[] integers
более логично, поскольку не позволяет создавать переменные разных типов (т.е.int и массив) в одном объявлении (в отличие от объявления в стиле C).