Maison >Java >javaDidacticiel >Pourquoi `j = j ;` en Java laisse-t-il `j` inchangé ?
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>
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 :
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>
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>
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 :
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!