Maison > Java > javaDidacticiel > Pourquoi la modification de la variable d'itération dans une boucle Java For-Each ne modifie-t-elle pas le tableau d'origine ?

Pourquoi la modification de la variable d'itération dans une boucle Java For-Each ne modifie-t-elle pas le tableau d'origine ?

Barbara Streisand
Libérer: 2024-12-26 12:11:13
original
762 Les gens l'ont consulté

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

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"
Copier après la connexion

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';
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal