Mehrdimensionale Arrays (Matrizen)

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.

Deklaration

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[][];

Definition

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];

Zugriff

Auf Komponenten von mehrdimensionalen Arrays wird wie folgt zugegriffen:

  m[0][0] = 7;
  m[2][1] = 15 + m[0][0];

Beispiel

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).

Schritte 1, 2 und 3 im Detail

 
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.

Schritt 4

 
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.

Schritt 5

 
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
 

Schritt 6

 
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