Maison >Java >javaDidacticiel >Pourquoi l'affectation à la variable d'itération ne modifie-t-elle pas le tableau d'origine dans une boucle Java For-Each ?
Pourquoi l'affectation de la variable d'itération échoue
Dans la boucle foreach de Java, c'est une idée fausse courante selon laquelle l'affectation à la variable d'itération modifie les données sous-jacentes. Considérez le code suivant :
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"
De façon inattendue, la sortie reste "boss" malgré le changement apparent de "o" en "a" dans la boucle. Ce comportement découle de la nature des boucles foreach.
Lors de l'utilisation de foreach, la variable d'itération est une copie de l'élément du tableau. L'affectation à la variable d'itération ne modifie que la copie, pas l'élément du tableau lui-même. Pour mettre à jour le tableau sous-jacent, des modifications explicites sont nécessaires :
for (int i = 0; i < array.length; i++) { if (array[i] == 'o') { array[i] = 'a'; } }
Ce code révisé attribue aux éléments réels du tableau, garantissant la modification prévue de 'o' en 'a'.
Dans En résumé, les boucles foreach facilitent l'itération sur les collections, mais les affectations à la variable d'itération n'affectent que la copie locale. Pour les modifications persistantes, une indexation explicite du tableau est requise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!