Maison  >  Article  >  Java  >  Pourquoi j = j attribue-t-il 0 à j en Java ?

Pourquoi j = j attribue-t-il 0 à j en Java ?

DDD
DDDoriginal
2024-10-27 03:26:29462parcourir

Why does j = j   assign 0 to j in Java?

Opérateur de post-incrémentation en Java

Question :

Dans l'extrait de code ci-dessous, pourquoi l'opérateur de post-incrémentation j attribue-t-il 0 à j ?

public class Test {
    public static void main(String[] args) {
        int j = 0;
        for (int i = 0; i < 100; i++) {
            j = j++;
        }
        System.out.println(j); // prints 0
    }
}

Selon l'auteur du livre "Java Puzzlers", l'instruction j = j est similaire à la séquence suivante :

temp = j;
j = j + 1;
j = temp;

Cependant, l'instruction a = b attribue à b la valeur 1, ce qui contredit le comportement attendu de l'opérateur de post-incrémentation.

Réponse :

L'erreur dans l'argument consiste à appliquer la règle de l'incrément puis à attribuer à a = b mais pas à j = j . La séquence correcte d'opérations pour a = b est :

temp = b;
b = b + 1; // increment
a = temp; // assign

En appliquant la même règle à j = j , nous obtenons :

j = j;
j = j + 1; // increment

Comme la valeur initiale de j était 0, l'opérateur post-incrément renvoie 0 car la valeur de j avant l'incrément est utilisée dans l'expression.

Par conséquent, la valeur finale de j est 0 car l'instruction d'affectation est évaluée à j = 0.

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:
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