i

Know How

Arrays in Java

Arrays sind dazu geeignet mehrere -normalerweise gleichartige- Dinge zu verwalten. Dabei muss die Zahl der Elemente im Array bei der Erzeugung des Arrays feststehen. Ein Array wird in Java folgendermaßen benutzt:

Typ[] variablenname;   // Definition des Arrays
variablenname = new Typ[anzahl]; // Erzeugung des Arrays

// Zugriff auf das erste Element, Nummerierung ab 0!!!
variablenname[0]

// Zahl der Elemente, KEINE Methode, also keine Klammern am Ende!
variablenname.length

Also z.B. für ein Array von ganzen Zahlen:

int[] zahlen = new int[10];
zahlen[0] = 42;
zahlen[zahlen.length - 1] = 99; // Letztes Element!!!
// Alle Zahlen ausgeben
for(int i = 0; i < zahlen.length; i++) {
    System.out.println(zahlen[i]);
}

oder für ein Array von Hunden:

Hund[] hunde = new Hund[5];

// Erzeuge die Hunde
for(int i = 0; i < hunde.length; i++) {
   hunde[i] = new Hund();
}

// lasse alle Hund bellen
for(int i = 0; i < hunde.length; i++) {
   hunde[i].bellen();
}

Wie Du siehst weicht die Syntax bei Arrays etwas von der Syntax ab, wie man sie in Java gewohnt ist (z.B. Erzeugung eines Array-Objekts). Da Arrays in praktisch allen Sprachen verfügbar sind, hat man sich hier an den üblichen Konventionen orientiert.

for-each Schleife

Alternativ zur obigen for-Schleife, kann man auch eine sogenannte for-each Schleife benutzen, um alle Objekte einer Objektsammlung zu durchlaufen:

for(int z: zahlen) {
    System.out.println(z);
}

// beziehungsweise für Hund

for(Hund h: hunde) {
   h.bellen();
}

Die for-each Schleife besitzt den Vorteil, dass sie deutlich kompakter und besser lesbar ist. Sie besitzt aber den Nachteil, dass man nicht so flexibel ist. Man kann mit einer for-each Schleife bspw. nicht jedes zweite Element eines Arrays verarbeiten oder das Array in umgekehrter Reihenfolge verarbeiten. Auch steht der Index des aktuellen Elements während der for-each Schleife nicht zur Verfügung.

Suche

v
7.1.4.1.2
inf-schule.de/oop/java/experten/arrays/knowhow
inf-schule.de/7.1.4.1.2
inf-schule.de/@/page/s5GS3yksbfCv0958

Rückmeldung geben