При создании 2D-массива, как помнить, указаны ли строки или столбцы в первую очередь?
Что входит в 2D-массив, строки или столбцы?
Ответ 1
Java считается "основной строкой", что означает, что он сначала выполняет строки. Это связано с тем, что 2D-массив представляет собой "массив массивов".
Например:
int[ ][ ] a = new int[2][4]; // Two rows and four columns.
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
Его также можно визуализировать следующим образом:
a[0] -> [0] [1] [2] [3]
a[1] -> [0] [1] [2] [3]
Вторая иллюстрация показывает аспект массива массивов. Первый массив содержит {a[0] and a[1]}
, и каждый из них представляет собой массив, содержащий четыре элемента, {[0][1][2][3]}
.
TL; Резюме DR:
Array[number of arrays][how many elements in each of those arrays]
Дополнительные пояснения см. также Массивы - 2-мерные.
Ответ 2
В то время как Matt B может быть истинным в некотором смысле, это может помочь думать о многомерном массиве Java, даже не думая о геометрических матрицах. Масштабируемые массивы Java - это просто массивы массивов, и каждый элемент первого "измерения" может иметь разный размер от других элементов или фактически может фактически хранить нулевой "sub" -array. См. Комментарии в разделе этот вопрос
Ответ 3
Инстинктивно геометрически мыслит: горизонтальная (X) ось, а затем вертикальная (Y) ось. Это, однако, не случай с 2D-массивом, сначала идут строки, а затем столбцы.
Рассмотрим следующую аналогию: в геометрии один идет к лестнице (ось X) и поднимается на нее (ось Y). Напротив, в Java спускается лестница (строки) и уходит (столбцы).
Ответ 4
В Java нет многомерных массивов. Существуют массивы массивов. Итак:
int[][] array = new int[2][3];
На самом деле он состоит из двух массивов, каждый из которых имеет три элемента.
Ответ 5
Все зависит от вашей визуализации массива. Строки и столбцы - это свойства визуализации (возможно, в вашем воображении) массива, а не самого массива.
Это точно так же, как запрос - это номер "5" красный или зеленый?
Я мог бы нарисовать его красным, я мог бы нарисовать его жадностью? Цвет не является неотъемлемым свойством числа. Точно так же представление 2D-массива как сетки строк и столбцов не обязательно для существования этого массива.
2D-массив имеет только первый размер и второй размер, все, что связано с визуализацией, - это просто ваш аромат.
Когда у меня есть char массив char[80][25]
, я могу напечатать его на консоли, повернутой так, чтобы у меня было 25 строк по 80 символов, которые соответствуют экрану без прокрутки.
Я попытаюсь представить жизнеспособный пример при представлении 2D-массива, поскольку строки и столбцы вообще не имеют смысла. Скажем, мне нужен массив из 1 000 000 000 целых чисел. У моей машины 8 ГБ оперативной памяти, поэтому у меня достаточно памяти для этого, но если вы попытаетесь выполнить var a = new int[1000000000]
, скорее всего, вы получите исключение OutOfMemory. Это из-за фрагментации памяти - нет последовательного блока памяти такого размера. Вместо этого вы можете создать 2D-массив размером 10 000 x 100 000 с вашими значениями. Логически это 1D-массив, поэтому вы хотите рисовать и представлять его как единую последовательность значений, но из-за технической реализации это 2D.
Ответ 6
В java строки выполняются первыми, потому что 2-мерный массив считается двумя отдельными массивами. Начинается с массива размера первой строки 1.