Heim >Java >javaLernprogramm >Warum ändert das Ändern der Iterationsvariablen in einer Java-For-Each-Schleife nicht das ursprüngliche 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!