+1 Daumen
722 Aufrufe


1. Einführung

Wie du aus diesem Artikel weißt, handelt es sich bei Arrays um Datenstrukturen, die einem Bücherregal ähneln. Du kannst in ihnen Objekte des selben Typs speichern und sehr leicht auf diese zugreifen.

2. Implementierungsmöglichkeiten

In Java gibt es kein Keyword für die Deklaration eines Arrays. Man verwendet hier die eckigen Klammern [ ]. Diese kann an verschiedenen Stellen bei der Deklaration eines Arrays geschrieben werden.

Wenn du ein Array definieren willst, musst du bereits bei der Initialisierung die Anzahl der Elemente mitgeben. Du schreibst also:

Typ[] array = new Typ[anzahl];

Für ein Bücherregal mit 5 Büchern (also eine Datenstruktur, die 5 Elemente vom Typ "Buch" enthält) kannst du also schreiben:

Buch[] buecherregal = new Buch[5];

Wenn du die Elemente direkt hinter den eckigen Klammern auflistest, brauchst du die Anzahl der Elemente (also die Länge des Arrays) nicht mit angeben:

Buch[] buecherregal = new Buch[] {buch1, buch2, buch3};

Auf diese Art und Weise hast du ein Bücherregal mit 3 Büchern definiert. Um auf die Bücher zuzugreifen, rufst du einfach dein Bücherregal mit dem in Klammern gesetzten Index auf:

System.out.println(buecherregal[0]); // liefert Buch 1
System.out.println(buecherregal[1]); // liefert Buch 2
System.out.println(buecherregal[2]); // liefert Buch 3

Wenn du ein neues Element in ein Array eintragen willst, verwendest du dieselbe Syntax wie beim Zugriff auf die Elemente, nur dass du jetzt ein "=" und dann den einzutragenden Wert dahinter schreibst:

buecherregal[0] = new Buch("Der Sandmann");

Vergiss aber nicht, dass du bei 0 zu zählen beginnst, denn ein Array mit 5 Elementen läuft vom Index 0 bis zum Index 4. Für n Elemente läuft der Index von 0 bis n-1 (also immer 1 weniger als die Anzahl der Elemente im Array).

Du kannst den new-Operator theoretisch auch weglassen und nur die geschweiften Klammern verwenden:

Buch[] buecherregal = {buch1, buch2, buch3};

Jetzt kennst du alle Varianten, mit denen du in Java Arrays definieren kannst. Fassen wir noch einmal kurz zusammen:

Typ[] array = new Typ[anzahl];
Typ[] array = new Typ[] {/* Auflistung der Elemente */};
Typ[] array = {/* Auflistung der Elemente */};

Jetzt hast du eine Code-Schablone, in die du nur deine entsprechenden Codestücke eintragen musst (z. B. "String" für "Typ" und die Variablenbezeichnung "passwörter" statt "array"):

String[] passwoerter = new String[3];
String[] passwoerter = new String[] {"admin", "12345", "geheim"};
String[] passwoerter = {"admin", "12345", "geheim"};

Ebenso kannst du primitive Typen verwenden und dir z. B. ein Array aus Primzahlen bauen. Dafür verwendest du "int" statt "Typ" und "primzahlen" statt "array":

Das ist wie "Formeln-Einsetzen".

int[] primzahlen = new int[5];
int[] primzahlen = new int[]{2, 3, 5, 7, 11};
int[] primzahlen = {2, 3, 5, 7, 11};

Jetzt hast du noch einmal die Möglichkeit, dein Wissen auf einen Schlag zu verdoppeln. Du kannst die eckigen Klammern in Java nämlich auch direkt hinter den Variablennamen schreiben:

Typ array[] = new Typ[anzahl];
Typ array[] = new Typ[] {/* Auflistung der Elemente */};
Typ array[] = {/* Auflistung der Elemente */}; 

All die Varianten, die du jetzt kennengelernt hast, haben denselben Effekt.

3. Die Länge eines Arrays

Die Länge eines Arrays kann in Java mit dem Attribut length ausgegeben werden:

Buch[] buecherregal = new Buch[] {buch1, buch2, buch3};
               
System.out.println(buecherregal.length); // Liefert 3.

Dies kannst du nutzen, um z. B. in For-Schleifen die Obergrenze zu definieren. Eine Code-Schablone für For-Schleifen, bei denen die einzelnen Elemente eines Arrays durchlaufen werden, sieht wie folgt aus:

for(int i = 0; i < array.length; i++) {
  // Zugriff auf das i-te Element im Array "array" via "array[i]"
}

4. java.lang.ArrayIndexOutOfBoundsException

Wenn du diese Fehlermeldung in Java siehst, dann greifst du auf ein Element in einem Array zu, das es nicht gibt. Das passiert immer dann, wenn du einen Index verwendest, den es aufgrund der Länge des Arrays nicht geben kann. Der klassische Fehler ist, dass du ein Array mit z. B. 3 Elementen definiert hast und versuchst auf den Index 3 zuzugreifen, was (wie du mittlerweile weißt) nicht funktioniert. Der Index läuft für 3 Bücher nämlich nur von 0 bis 2:

Buch[] buecherregal = new Buch[] {buch1, buch2, buch3};

System.out.println(buecherregal[3]); // Fehler, da das Array 3 Elemente enthält und nur Indizes von 0-2 zulässig sind.
System.out.println(buecherregal[2]); // Liefert buch3.
Dieser Artikel hat 50 Bonuspunkte erhalten. Schreib auch du einen Artikel.

Autor: Florian André Dalwigk

geschlossen: Stack-Artikel
Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community