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

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

Linda Hamilton
Libérer: 2024-12-18 20:25:18
original
930 Les gens l'ont consulté

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

Pourquoi la modification de la variable d'itération dans une boucle For-Each ne modifie pas les données sous-jacentes

En Java, la boucle for-each améliorée est une syntaxe pratique pour parcourir des tableaux ou des collections. Cependant, une idée fausse courante surgit lorsque l'on tente de modifier les données sous-jacentes dans la boucle.

Considérez l'extrait de code suivant :

String boss = "boss";
char[] array = boss.toCharArray();

for(char c : array)
{
 if (c== 'o')
     c = 'a'; 
}
System.out.println(new String(array)); //Outputs "boss"
Copier après la connexion

Malgré le bloc if-else qui tente de remplacer toutes les occurrences de 'o' avec 'a', le résultat reste "boss". Pourquoi est-ce le cas ?

La clé pour comprendre ce comportement réside dans la nature de la variable d'itération dans une boucle for-each. Lors d'une itération sur un tableau à l'aide de la syntaxe for-each, la variable d'itération (c dans ce cas) est simplement une copie de l'élément du tableau à l'index actuel. Toute modification apportée à la variable d'itération ne se propage pas au tableau d'origine.

Pour modifier les données sous-jacentes, il est nécessaire d'accéder explicitement et de modifier l'élément du tableau lui-même. Ceci peut être réalisé en utilisant la syntaxe de boucle standard :

for (int i = 0; i < array.length; i++) {
    if (array[i] == 'o') {
        array[i] = 'a';
    }
}
Copier après la connexion

Dans ce code révisé, la variable d'itération i garde la trace de l'index actuel dans le tableau, tandis que array[i] accède à l'élément réel à ce moment-là. indice. L'affectation directe à array[i] modifiera le contenu du tableau.

Par conséquent, lorsque vous travaillez avec des tableaux ou des collections en utilisant la syntaxe de boucle for-each, il est crucial de se rappeler que la modification de la variable d'itération seule ne suffit pas modifier les données sous-jacentes. Pour apporter des modifications permanentes aux données, il est nécessaire d'accéder et de modifier explicitement les éléments de la collection à l'aide de la syntaxe de boucle standard ou d'autres méthodes appropriées.

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