Java: двумерный массив хранится в главном или главном порядке строки? - PullRequest
32 голосов
/ 09 июля 2011

В Java хранится многомерный массив в мажорном порядке или в мажорном ряду?

Ответы [ 3 ]

67 голосов
/ 09 июля 2011

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 этого подчиненного массива. "Я думаю, что это довольно похоже на порядок на главном ряду, но это не совсем то же самое.

4 голосов
/ 09 июля 2011

В Java у вас есть только одномерные массивы.

2D-массивы - это в основном только одномерные массивы одномерных массивов.

int[ ][ ] table;

table = new int[3][ ];

table[0] = new int[5];

table[1] = new int[5];

table[2] = new int[5];
2 голосов
/ 09 июля 2011

Ни.Двумерный массив в Java - это массив ссылок на массивы.Он не хранится в памяти линейно.

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