Беспорядок в многомерном массиве в Java

Я не могу понять следующий многомерный код. Кто-то мог разъяснить меня?

int[][] myJaggedArr = new int [][] 
{
              new int[] {1,3,5,7,9},
              new int[] {0,2,4,6},
               new int[] {11,22}
   };

Я могу знать, как это отличается от следующего кода?

int[][] myArr = new int [][] {
             {1,3,5,7,9},
               {0,2,4,6},
                {11,22} };
13
задан Alvin 3 June 2010 в 17:16
поделиться

6 ответов

Это совсем не разные вещи. В первом случае просто более явно указано, что вы создаете массив массивов.

7
ответ дан 2 December 2019 в 00:58
поделиться

Никакой реальной разницы. Просто первый объявляет подмассивы, а второй просто помещает значения, которые являются массивами, в массив

3
ответ дан 2 December 2019 в 00:58
поделиться

Два фрагмента кода дают идентичные результаты.

Многомерные массивы - это массивы массивов.

  • myArr [0] [1] вернет 3
  • myArr [1] [1] вернет 2
  • myArr [2] [0] вернет 11
2
ответ дан 2 December 2019 в 00:58
поделиться

Начиная с начала объявления массивов, как описано выше.

Вы можете создать массив, указав:

int [] arr = new int [3]; // (уравнение 1)

Вы можете пойти еще дальше, объявив значения в массиве с помощью:

int [] arr = {0,1,2}; // (уравнение 2)

Если вы знаете свои значения заранее, вам не нужно создавать экземпляр int [].

Теперь к вашему вопросу. Как утверждали другие, между ними нет разницы, за исключением более четкой картины того, что вы делаете. Эквивалент ур. 2 в двумерном массиве:

int [] [] arr = {{0,1,2}, {3,4,5}, {6,7,8}}; // (уравнение 3)

Обратите внимание, что вам не нужно объявлять "new int [] []" перед тем, как вы начнете вводить значения. «{0,1,2}» - это сам массив, как и все остальное в первом «{» и последнем} в уравнении 3.Фактически, после объявления arr вы можете вызвать массив «{0,1,2}» из уравнения 3 с помощью следующего оператора:

arr [0]; // (уравнение 4)

уравнение 4 эквивалентно уравнению 2. Вы можете отключить простой "{" с помощью "new int [] {" или "new int [] [] {". Если вы хотите заменить один на другой, это нормально, и единственная реальная разница - погода или нет, это соответствует вашему стилю программирования.

Для развлечения, вот пример трехмерного массива в сокращенном синтаксисе:

// Это очень длинный оператор, и я не рекомендую использовать его таким образом

int [] [] [] arr = {{{0,1,2}, {3,4,5}, {6,7,8}}, {{9,10,11}, {12,13,14}, {15,16,17}}, {{18,19,20}, {21,22,23}, {24,25,26}}};

0
ответ дан 2 December 2019 в 00:58
поделиться

Оба этих фрагмента кода приведут к многомерным массивам с эквивалентными значениями.

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

int[][] myArr = { {1,3,5,7,9}, {0,2,4,6}, {11,22} };

В Oracle Java Tutorial нет примеров смешивания использования new для объявления массива с буквальным объявлением массива.

0
ответ дан 2 December 2019 в 00:58
поделиться

Совершенно то же самое - если вы замените один на другой и скомпилируете, вы получите побайтно идентичные файлы класса . Попробуй сам!

0
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: