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 à la variable d'itération ne modifie-t-elle pas le tableau d'origine dans une boucle Java For-Each ?

Susan Sarandon
Libérer: 2024-12-29 08:59:10
original
984 Les gens l'ont consulté

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

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

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

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!

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