Aus PHP kennt man unteranderem die beliebte foreach-Schleife, dort kann man problemlos über ein Array oder eine Liste iterieren, dies geht zwar auch mit einer for-Schleife, doch man benötigt ja nicht immer den Zählindex und mit der foreach-Schleife geht vieles dann doch leichter und schneller, vor allem muss man nicht soviel tippen ;).
In Java gibt es seit Version 1.5 eine entsprechende Variante, angelehnt an die for-Schleife.
public class ForEach {
protected static String[] color = new String[] { "blau", "grün", "rot", "gelb", "weiß" };
public static void main(String[] args) {
// foreach-Schleife
for (String element : color)
System.out.println(element);
// normale for-Schleife
for (int i = 0; i < color.length; i++)
System.out.println(color[i]);
}
}
Wie man sehen kann handelt es sich um eine etwas abgewandelte for-Schleife, mit diesem Konstrukt kann man über Arrays, Listen, etc. iterieren und muss sich nicht mehr um die Länge dergleichen kümmern. Jedes Element wird einfach einmal “abgearbeitet”. Als Vergleich oben auch mal die normale for-Schleife. Man sieht das man bei der for-Schleife wesentlich mehr “coden” muss als bei einer foreach-Variante. Zu beachten ist allerdings das die for-Schleife mit den wirklichen Daten im Speicher arbeitet, wohingegen die foreach-Schleife nur eine Kopie nutzt, also Veränderungen an den Elementen innerhalb der foreach-Schleife nur lokal gültig sind und nach außen hin verworfen werden!
Zu lesen ist der Doppelpunkt innerhalb der foreach-Schleife übrigens als “in”, also zum Beispiel oben: Für jedes Element in dem Array Color.
Hinweis:
Wie Micha richtig bemerkt hat, sollte man bei der foreach-Schleife in Java eher auf Arrays verzichten. Diese Variante funktioniert zwar ebenfalls, verursacht aber durch den Autoboxing Mechanismus mehr Last als nötig. Ein Objekt vom Typ java.util.List kann hingegen schneller (da ohne Autoboxing) durchlaufen werden. Dies fällt bei kleinen Schleifen kaum auf, sollte bei Großen jedoch bedacht werden.
Weitere Informationen dazu gibt es bei developer.com oder bei Sun selber.