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

Warum weist j = j in Java j 0 zu?

DDD
Freigeben: 2024-10-27 03:26:29
Original
571 Leute haben es durchsucht

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
    }
}
Nach dem Login kopieren

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

temp = j;
j = j + 1;
j = temp;
Nach dem Login kopieren

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
Nach dem Login kopieren

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

j = j;
j = j + 1; // increment
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage