Mehrdimensionale Arrays sind Arrays, deren Komponenten wieder Arrays sind. Mit diesem Konstrukt sind sogar Matrizen beliebiger Dimensionen möglich.
Weiter brauchen die einzelnen Komponenten (welche ja wieder Arrays sind) eines mehrdimensionalen Arrays nicht alle die gleiche Länge zu haben.
Analog zur Deklaration von eindimensionalen Arrays wird das Symbol "[]" verwendet; nur eben so oft, wie Dimensionen vorhanden sind. In folgendem Beispiel wird ein zweidimensionaler Array deklariert.
int m[][];
Die Definition geschieht mit new, ganz analog zu eindimensionalen Arrays.
m = new int[3][]; m[0] = new int[2]; m[1] = new int[5]; m[2] = new int[3];
Auf Komponenten von mehrdimensionalen Arrays wird wie folgt zugegriffen:
m[0][0] = 7; m[2][1] = 15 + m[0][0];
Wie bei den Variablen versuche ich mehrdimensionale Arrays am Beispiel einer Tabelle anzugeben. Doch zuvor das vollständige Beispiel.
JAVA-code | Beschreibung | |
1. | short y[]; | y ist ein eindimensionaler Array. |
2. | short x[][]; | Ein zwiedimensionaler Array vom Bassistyp short wird geschaffen. |
3. | y = new short[2]; | y wird als Array definiert: bestehend aus 2 short Variablen. |
4. | x = new short[3][]; | Die erste Dimension von x wird definiert. x ist ein Array bestehend aus 3 Arrays. |
5. | x[1] = y; | Die zweite Komponente von x (x[0] ist die erste) wird mit y initialisiert. |
6. | x[1][1] = 5; | In diesem Schritt wird x[1][1] (aber auch y[1]) auf den Wert 5 gesetzt (Hinweis: x[1] := y). |
JAVA-Code | Name | Datentyp | Wert | Beschreibung | |
1. | short y[]; | y | short[] | ? | Die Variable y ist wird als eindimensionaler Array deklariert. |
2. | short x[][]; | x | short[][] | ? | Die Variable x ist wird als zweidimmensionaler Array deklariert. |
3. | y = new short[2]; |
y | short[] | (s. unten) | Mit dieser Zuweisung geschehen zwei Dinge. Zuerst (3.1) wird ein Array bestehend aus 2 short Variablen geschaffen. Danach (3.2) wird eine Referenz auf diesen Array der Variablen y zugewiesen (siehe unten). |
3.1 | y = new short[2]; |
* | short[] | "<short[2]>:" | An Adresse * wird der neue Array generiert. Einen Namen hat die Arrayvariable hier nicht (nur eben * für den JAVA-Interpreter). |
*[0] | short | 0 | |||
*[1] | short | 0 | |||
3.2 | y = new short[2]; |
y | short[] | * | Jetzt wird der Array (*) der Variablen y zugewiesen. |
JAVA-Code | Name | Datentyp | Wert | Beschreibung | |
1-3 | y | short[] | * | (Resultate aus Schritt 1, 2 und 3) | |
x | short[][] | ? | (siehe unten) | ||
* | short[] | "<short[2]>:" | |||
*[0] | short | 0 | |||
*[1] | short | 0 | |||
4. | x = new short[3][]; |
x | short[][] | (s. unten) | Mit dieser Zuweisung geschehen zwei Dinge. Zuerst (4.1) wird ein Array bestehend aus 3 Referenzen auf Arrays geschaffen. Danach (4.2) wird eine Referenz auf diesen Array der Varible x zugewiesen. |
4.1 | x = new short[3][]; |
° | short[3][] | "<short[3][]>:" | An Adresse ° wird der neue Array generiert. Einen Namen hat die Arrayariable hier nicht (nur eben ° für den JAVA-Interpreter). |
°[0] | short[] | null | null steht für eine Referenz, die auf kein Objekt zeigt. (s. Variable) | ||
°[1] | short[] | null | |||
°[2] | short[] | null | |||
4.2 | x = new short[3][]; |
x | short[][] | ° | Jetzt wird der Array (°) der Variablen x zugewiesen. |
JAVA-Code | Name | Datentyp | Wert | Beschreibung | |
1-4 | y | short[] | * | ||
x | short[][] | ° | (Resultat aus Schritt 4) | ||
* | short[] | "<short[2]>:" | |||
*[0] | short | 0 | |||
*[1] | short | 0 | |||
° | short[3][] | "<short[3][]>:" | |||
°[0] | short[] | null | |||
5. | x[1] = y; | °[1] | short[] | * | Der Variablen x[1] wird der Array y zugewiesen. |
°[2] | short[] | null |
JAVA-Code | Name | Datentyp | Wert | Beschreibung | |
1-5 | y | short[] | * | ||
x | short[][] | ° | |||
* | short[] | "<short[2]>:" | |||
*[0] | short | 0 | |||
6. | x[1][1] = 5; | *[1] | short | 5 | Da x[1] auf denselben Array zeigt wie y, wird mit x[1][1] auch y[1] verändert. Dieser Code ist identisch mit: y[1] = 5; |
° | short[3][] | "<short[3][]>:" | |||
°[0] | short[] | null | |||
°[1] | short[] | * | |||
°[2] | short[] | null |