Java не имеет многомерных массивов.У него есть массивы массивов.Так, например,
int[][]
... - это массив int[]
(и, конечно, int[]
- это массив int
).
Следовательно, Java не является нипорядковый номер столбца или порядковый номер строки (но см. примечание ниже о том, как читать a[2][3]
), поскольку, хотя записи данного массива хранятся в непрерывном блоке памяти, подчиненные массивы, на которые указывают эти записи, являются объектными ссылками, чтобы полностью разделить, несвязанные блоки памяти.Это также означает, что массивы массивов Java по своей природе зазубренные : запись в [0]
может относиться к массиву с 3 слотами, запись в [1]
может относиться к массиву с 4 слотами [2]
может вообще не относиться к массиву (он может иметь null
), и, возможно, [3]
относится к массиву с 6 слотами.
Изображение стоит от 1 до 24 слов и всего этого:
+−−−−−−−−+
+−−−−>| int[] |
+−−−−−−−−−−−+ | +−−−−−−−−+
| int[][] | | | 0: int |
+−−−−−−−−−−−+ | | 1: int |
| 0: int[] |−−−−−−+ | 2: int |
| 1: int[] |−−−−−−+ +−−−−−−−−+
| 2: null | |
| 3: int[] |−−+ | +−−−−−−−−+
+−−−−−−−−−−−+ | +−−−−>| int[] |
| +−−−−−−−−+
| | 0: int |
| | 1: int |
| | 2: int |
| | 3: int |
| +−−−−−−−−+
|
| +−−−−−−−−+
+−−−−−−−−−| int[] |
+−−−−−−−−+
| 0: int |
| 1: int |
| 2: int |
| 3: int |
| 4: int |
| 5: int |
+−−−−−−−−+
Как только вы это знаете, вы знаете, что, скажем, a[2][3]
означает "Получить массив, на который ссылается запись с индексом 2
из a
, затем получить запись, на которую ссылается индекс 3
этого подчиненного массива. "Я думаю, что это довольно похоже на порядок на главном ряду, но это не совсем то же самое.