Maison > Java > javaDidacticiel > Pourquoi `j = j ;` en Java laisse-t-il `j` inchangé ?

Pourquoi `j = j ;` en Java laisse-t-il `j` inchangé ?

DDD
Libérer: 2024-10-26 19:20:03
original
663 Les gens l'ont consulté

Why does `j = j  ;` in Java leave `j` unchanged?

Opérateur de post-incrémentation en Java

L'opérateur de post-incrémentation ( ) est un opérateur unaire qui incrémente la valeur d'une variable de 1. Cependant , sa sémantique peut être quelque peu déroutante.

Considérez le segment de code suivant :

<code class="java">int j = 0;
for (int i = 0; i < 100; i++) {
  j = j++;
}
System.out.println(j); // prints 0</code>
Copier après la connexion

Ici, la valeur de j reste 0 après la boucle. Ce comportement est contre-intuitif à première vue, mais il peut être compris en examinant les étapes effectuées par le compilateur :

  1. Évaluer le membre de droite : L'expression j est évaluée, qui incrémente la valeur de j de 0 à 1 mais renvoie sa valeur d'origine (0).
  2. Attribuer le résultat : La valeur résultante (0) est attribuée à j.

Essentiellement, l'opérateur de post-incrémentation stocke la valeur d'origine de la variable avant de l'incrémenter. Ceci est similaire au bloc de code suivant :

<code class="java">int temp = j;
j++;
j = temp;</code>
Copier après la connexion

En revanche, considérons le segment de code suivant :

<code class="java">int a = 0, b = 0;
a = b++;
System.out.println(a); // prints 0
System.out.println(b); // prints 1</code>
Copier après la connexion

Ici, a se voit attribuer la valeur d'origine de b (0), puis b est incrémenté. Ce comportement adhère à la règle selon laquelle les affectations avec l'opérateur d'incrémentation post-fix évaluent d'abord le côté droit, incrémentent la variable, puis attribuent la valeur d'origine.

En appliquant la même logique à l'exemple précédent, nous pouvons voyez pourquoi j = j donne 0 :

  1. Évaluez le côté droit : j est évalué, renvoyant la valeur d'origine de j (0).
  2. Attribuer le résultat : La valeur résultante (0) est attribuée à j, écrasant sa valeur incrémentée (1).

Ainsi, l'opérateur post-incrémentation peut conduire à des résultats inattendus résultats s’ils ne sont pas bien compris. Il est important de se rappeler qu'il incrémente la variable après avoir évalué l'expression et attribue la valeur d'origine à la variable.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal