
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.
Hallo Tobias,
das Foreach-Konzept basiert auf einem Autoboxing-Mechanismus und sollte nicht unbedingt auf klassische Arrays (Arrays mit [ und ]) in Java benutzt werden.
Nimm lieber eine Implementation von java.util.List wie ArrayList, dann hat es die Java-VM einfacher, denn dann wird eigentlich nur noch ein Iterator über die Liste erzeugt und es macht dein Programm schneller.
Das dürfte in deinem kleinen Beispiel nicht relevant sein, aber in größeren Listen und Arrays kann es schon einen messbaren Unterschied machen.
Ciao, Micha
Hi Micha,
stimmt, da hast du Recht, das habe ich hierbei jetzt nicht bedacht, danke für den Hinweis!
Habe es oben ergänzt.
MfG Tobias
Hallo, ich wollte mal kurz nebenbei fragen, welches Plugin du einsetzt um die Codes so darzulegen und ob man damit auch
PHP / MySQL / HTML Code darstellen kann?
Danke
Nutze https://wordpress.org/plugins/wp-syntax/
Kann nahezu alle Sprachen ;)
Danke sehr nice das Plugin ;)
Ich bin immer froh, solche Seiten wie diese hier zu finden. Ein einfaches Lernen aus Büchern ist mit einfach zu trocken, Internetseiten bieten optisch einfach viel mehr. Vielen Dank für die Mühen.