Heim  >  Artikel  >  Java  >  Warum weist j = j in Java j 0 zu?

Warum weist j = j in Java j 0 zu?

DDD
DDDOriginal
2024-10-27 03:26:29462Durchsuche

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

Post-Inkrement-Operator in Java

Frage:

Im Codeausschnitt unten, warum Weist der Post-Inkrement-Operator j j 0 zu?

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

Laut dem Autor des Buches „Java Puzzlers“ ähnelt die Aussage j = j der folgenden Sequenz:

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

Allerdings weist die Anweisung a = b b den Wert 1 zu, was dem erwarteten Verhalten des Post-Inkrement-Operators widerspricht.

Antwort:

Der Fehler in Das Argument besteht darin, die Inkrementierungsregel anzuwenden und dann a = b zuzuweisen, aber nicht j = j . Die korrekte Reihenfolge der Operationen für a = b ist:

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

Wenn wir dieselbe Regel auf j = j anwenden, erhalten wir:

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

Da der Anfangswert von j 0 war, Der Post-Inkrement-Operator gibt 0 zurück, da der Wert von j vor dem Inkrement im Ausdruck verwendet wird.

Daher ist der Endwert von j 0, da die Zuweisungsanweisung zu j = 0 ausgewertet wird.

Das obige ist der detaillierte Inhalt vonWarum weist j = j in Java j 0 zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn