Heim > Java > javaLernprogramm > Warum ändert die Zuweisung zur Iterationsvariablen nicht das ursprüngliche Array in einer Java-For-Each-Schleife?

Warum ändert die Zuweisung zur Iterationsvariablen nicht das ursprüngliche Array in einer Java-For-Each-Schleife?

Susan Sarandon
Freigeben: 2024-12-29 08:59:10
Original
966 Leute haben es durchsucht

Why Doesn't Assigning to the Iteration Variable Change the Original Array in a Java For-Each Loop?

Warum die Zuweisung der Iterationsvariablen fehlschlägt

In der foreach-Schleife von Java ist es ein weit verbreitetes Missverständnis, dass die Zuweisung an die Iterationsvariable die zugrunde liegenden Daten ändert. Betrachten Sie den folgenden Code:

String boss = "boss";
char[] array = boss.toCharArray();

for (char c : array) {
    if (c == 'o') {
        c = 'a';
    }
}
System.out.println(new String(array)); // Prints "boss", not "bass"
Nach dem Login kopieren

Unerwarteterweise bleibt die Ausgabe trotz der offensichtlichen Änderung von „o“ in „a“ in der Schleife „boss“. Dieses Verhalten ergibt sich aus der Natur von foreach-Schleifen.

Bei Verwendung von foreach ist die Iterationsvariable eine Kopie des Array-Elements. Durch die Zuweisung zur Iterationsvariablen wird nur die Kopie geändert, nicht das Array-Element selbst. Um das zugrunde liegende Array zu aktualisieren, sind explizite Änderungen erforderlich:

for (int i = 0; i < array.length; i++) {
    if (array[i] == 'o') {
        array[i] = 'a';
    }
}
Nach dem Login kopieren

Dieser überarbeitete Code weist den tatsächlichen Array-Elementen zu und stellt so die beabsichtigte Änderung von „o“ zu „a“ sicher.

In Zusammenfassend lässt sich sagen, dass foreach-Schleifen die Iteration über Sammlungen erleichtern, Zuweisungen an die Iterationsvariable wirken sich jedoch nur auf die lokale Kopie aus. Für dauerhafte Änderungen ist eine explizite Array-Indizierung erforderlich.

Das obige ist der detaillierte Inhalt vonWarum ändert die Zuweisung zur Iterationsvariablen nicht das ursprüngliche Array in einer Java-For-Each-Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage