Heim >Java >javaLernprogramm >Warum ändert das Ändern der Iterationsvariablen in einer Java-For-Each-Schleife nicht das ursprüngliche Array?

Warum ändert das Ändern der Iterationsvariablen in einer Java-For-Each-Schleife nicht das ursprüngliche Array?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 12:11:13763Durchsuche

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

Iterationsvariablenzuweisung in Foreach-Schleifen

In Java bieten foreach-Schleifen eine prägnante Syntax für die Iteration über Sammlungen. Beim Ändern der Iterationsvariablen innerhalb der Schleife entsteht jedoch ein häufiges Missverständnis. 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"

Warum gibt dieser Code „boss“ anstelle des erwarteten „bass“ aus?

Um dieses Verhalten zu verstehen, ist es wichtig zu erkennen, dass foreach-Schleifen ausgeführt werden Kopien von Sammlungselementen, nicht die Elemente selbst. Die Iterationsvariable, in diesem Fall c, ist nur eine lokale Kopie des aktuellen Elements im Array. Durch das Ändern von c wird das ursprüngliche Zeichen im Array nicht geändert.

Um die Array-Elemente zu ändern, müssen Sie explizit über ihren Index auf die Elemente zugreifen, etwa so:

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

Dieser Code weist die zu geändertes Zeichen direkt in das Array-Element, was zur gewünschten Ausgabe von „bass“ führt.

Zusammenfassend gilt: Denken Sie bei der Arbeit mit foreach-Schleifen daran, dass die Iterationsvariable eine lokale Kopie von darstellt Sammlungselement. Um die zugrunde liegenden Daten zu ändern, greifen Sie explizit über seinen Index auf das Element zu und führen Sie die Änderung direkt am Array durch.

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

Stellungnahme:
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