Разница между массивом int [] и массивом int [] - PullRequest
214 голосов
/ 24 сентября 2008

Недавно я думал о разнице между двумя способами определения массива:

  1. int[] array
  2. int array[]

Есть ли разница?

Ответы [ 25 ]

6 голосов
/ 23 сентября 2011

Это альтернативная форма, заимствованная из C, на которой основана java.

Как любопытство, существует три способа определения действительного main метода в Java:

  • public static void main(String[] args)
  • public static void main(String args[])
  • public static void main(String... args)
5 голосов
/ 24 сентября 2008

Нет никакой разницы, но Sun рекомендует поставить его рядом с типом, как описано здесь

3 голосов
/ 02 октября 2010

Наиболее предпочтительный вариант - int[] a - потому что int[] - это тип, а a - это имя. (ваш второй вариант такой же, как этот, с неуместным пробелом)

Функционально между ними нет разницы.

3 голосов
/ 02 октября 2010

Спецификация языка 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[][];

Таким образом, они приведут к одинаковому байт-коду.

2 голосов
/ 24 сентября 2008

Они полностью эквивалентны. int [] array является предпочтительным стилем. int array[] только что представлен как эквивалентный C-совместимый стиль.

2 голосов
/ 25 января 2017

Как уже говорилось, нет большой разницы (если вы объявляете только одну переменную на строку).

Обратите внимание, что SonarQube рассматривает ваш второй случай как незначительный кодовый запах:

Обозначения массива "[]" должны указывать на тип, а не на переменную (squid: S1197)

Обозначения массива всегда должны быть расположены на типе для лучшего кода читаемость. В противном случае разработчики должны смотреть как на тип, так и на имя переменной, чтобы узнать, является ли переменная массивом.

Пример несовместимого кода

int matrix[][];   // Noncompliant
int[] matrix[];   // Noncompliant

Совместимое решение

int[][] matrix;   // Compliant
2 голосов
/ 24 сентября 2008

Они одинаковые. Одно более читабельно (для некоторых), чем другое.

2 голосов
/ 24 октября 2010

Они одинаковы, но между этими утверждениями есть важное различие:

// 1.
int regular, array[];
// 2.
int[] regular, array;

в 1. регулярный - просто целое число, а не 2. где регулярный и массив - это массивы целых

Поэтому второе утверждение, которое вы имеете, предпочтительнее, поскольку оно более понятно. Первая форма также не рекомендуется в соответствии с этим руководством по Oracle .

2 голосов
/ 24 сентября 2008

В Java это просто разные синтаксические способы сказать одно и то же.

2 голосов
/ 02 октября 2010

Оба имеют одинаковое значение. Однако наличие этих вариантов также позволяет это:

int[] a, b[];

, что совпадает с:

int[] a;
int[][] b;

Однако, это ужасный стиль кодирования, и его никогда не следует делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...