Wie funktioniert die for-each-Schleife in Java wirklich? Detaillierte Erklärung mit Beispielen
Hallo zusammen! Ich habe vor kurzem angefangen, Java zu lernen, und bin auf die for-each-Schleife gestoßen. Es scheint alles klar zu sein: for (int x : numbers) { ... } — durchläuft einfach die Elemente eines Arrays oder einer Collection. Aber als ich tiefer grub, kamen viele Fragen auf.
Zum Beispiel habe ich diesen Code geschrieben:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String s : list) {
if (s.equals("B")) {
list.remove(s); // ConcurrentModificationException!
}
}
Und bekam eine ConcurrentModificationException. Warum? In einer normalen for-Schleife (for (int i = 0; i < list.size(); i++)) passiert das nicht.
Ein weiteres Beispiel — ich versuchte, Array-Elemente mit for-each zu ändern:
int[] arr = {1, 2, 3};
for (int x : arr) {
x = x * 2; // Funktioniert nicht! Das Array hat sich nicht geändert
}
Warum verweist x nicht auf das Array-Element? Und was passiert eigentlich "unter der Haube"? Kann for-each mit beliebigen Datentypen arbeiten? Wie der Compiler Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen