Affectation de variables d'itération dans les boucles Foreach
En Java, les boucles foreach fournissent une syntaxe concise pour itérer sur les collections. Cependant, une idée fausse courante surgit lors de la modification de la variable d'itération dans la boucle. 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"
Pourquoi ce code imprime-t-il "boss" au lieu de la "bass" attendue ?
Pour comprendre ce comportement, il est crucial de reconnaître que les boucles foreach fonctionnent sur des copies des éléments de collection, et non des éléments eux-mêmes. La variable d'itération, dans ce cas c, n'est qu'une copie locale de l'élément actuel du tableau. Modifier c ne modifie pas le caractère d'origine dans le tableau.
Pour modifier les éléments du tableau, vous devez accéder explicitement aux éléments via leur index, comme ceci :
for (int i = 0; i < array.length; i++) { if (array[i] == 'o') { array[i] = 'a'; } }
Ce code attribue le caractère modifié directement à l'élément du tableau, résultant en la sortie souhaitée de "bass".
En résumé, lorsque vous travaillez avec des boucles foreach, n'oubliez pas que la variable d'itération représente une copie locale de la collection élément. Pour modifier les données sous-jacentes, accédez explicitement à l'élément via son index et effectuez la modification directement sur le tableau.
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!