Java: tablica dwuwymiarowa jest przechowywana w kolejności kolumnowo-dur czy rządowo-dur?
W języku Java, czy wielowymiarowa tablica jest przechowywana w kolejności kolumnowo-major czy rządowo-major?
3 answers
Java nie ma tablic wielowymiarowych. Posiada tablice tablic. Na przykład,
int[][]
... jest tablicą int[]
(i oczywiście int[]
jest tablicą int
).
W związku z tym Java nie jest ani kolumną-majorem, ani wierszem-majorem (ale patrz uwaga poniżej o tym, jak czytać a[2][3]
), ponieważ podczas gdy wpisy danej tablicy są przechowywane w ciągłym bloku pamięci, podrzędne tablice, na które wskazują, są odniesieniami do obiektów do zupełnie oddzielnych, niepowiązanych bloków pamięci. pamięć. Oznacza to również, że tablice tablic Javy są z naturypostrzępione : wpis w [0]
może odnosić się do tablicy 3-slotowej, ten w [1]
może odnosić się do tablicy 4-slotowej, [2]
może w ogóle nie odnosić się do tablicy (może mieć null
), a być może [3]
odnosi się do tablicy 6-slotowej.
Zdjęcie jest warte 1k-24 słowa i takie tam:
+−−−−−−−−+ +−−−−>| 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 | +−−−−−−−−+
Gdy już to wiesz, wiesz, że (powiedzmy) a[2][3]
oznacza " Pobierz tablicę, do której odwołuje się wpis w indeksie 2
z a
, wtedy uzyskaj wpis, do którego odwołuje się indeks 3
tej podrzędnej tablicy."Myślę, że jest to dość podobne do rzędu rzędów-głównych, ale to nie to samo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-22 18:19:49
W Javie macie tylko jedną tablicę wymiarową.
Tablice 2D są w zasadzie tylko jednowymiarowymi tablicami jednowymiarowymi.
int[ ][ ] table;
table = new int[3][ ];
table[0] = new int[5];
table[1] = new int[5];
table[2] = new int[5];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-23 06:29:46
Żadne. Tablica dwuwymiarowa w języku Java to tablica odwołań do tablic. Nie jest przechowywany liniowo w pamięci.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 22:03:16