Почему работает синтаксис многомерного массива - PullRequest
1 голос
/ 03 октября 2019

Когда мы создаем 2d-массив, такой как int[][] a = new int[2][3], почему результирующий 2d-массив состоит из двухэлементного массива, который содержит трехэлементные int-массивы, а не наоборот. Причина, по которой я запутался, заключается в том, что когда мы создаем массив, мы делаем тип данных [], поэтому, когда мы делаем int [2] [3], почему бы нам не поместить три массива int [2] в массив с тремя точками (из [3]).

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Способ реализации в Java более логичен. Рассмотрим выражение доступа к элементу массива: a[x][y]. В настоящее время он может быть разложен до (a[x])[y], что означает «мы получаем x-й элемент a, тогда мы получаем y-й элемент результата». Итак, представьте, если new int[2][3] создает массив из трех элементов, каждый из которых является массивом из двух элементов. Тогда x должно быть в диапазоне 0..2, а y должно быть в диапазоне 0..1, что противоположно порядку измерения, используемому в точке создания массива. Это было бы совершенно запутанным.

0 голосов
/ 03 октября 2019

Полагаю, у вас есть смысл в вашей логике. Даже если вы могли бы поспорить, запись int[2][3] означает, что «первый индекс может иметь 2 разных значения, второй 3», что приводит к тому же самому, как он действительно работает.

В конце концов, это просто вопросспецификации и компиляции. И поскольку он указан так, а не так, он реализован и работает так.

...