Post-Inkrement-Operator in Java
In Java erhöht der Post-Inkrement-Operator ( ) den Wert einer Variablen nach ihrer Auswertung um eins. Dieses Verhalten kann zu unerwarteten Ergebnissen führen, wie der in „Java Puzzlers“ bereitgestellte Code zeigt:
<code class="java">public class Test22 { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 int a = 0, b = 0; a = b++; System.out.println(a); System.out.println(b); // prints 1 } }</code>
Die Verwirrung entsteht, wenn die Anweisung j = j untersucht wird. Gemäß der Java Language Specification (JLS) ist diese Aussage äquivalent zu:
<code class="java">temp = j; j = j + 1; j = temp;</code>
Diese Erklärung widerspricht jedoch dem Ergebnis von a = b, das a 0 zuweist und b auf 1 erhöht. Zur Lösung Aufgrund dieser Diskrepanz ist es wichtig zu beachten, dass a = b wie folgt ausgewertet wird:
<code class="java">temp = b; b = b + 1; a = temp;</code>
Das bedeutet, dass Post-Inkrementzuweisungen der Form lhs = rhs äquivalent sind zu:
<code class="java">temp = rhs; rhs = rhs + 1; lhs = temp;</code>
Die Anwendung dieser Regel sowohl auf j = j als auch auf a = b verdeutlicht die im Code beobachteten Ergebnisse. j = j weist temp effektiv den Wert von j (0) zu, erhöht j auf 1 und weist dann temp (0) wieder j zu. Dies erklärt, warum j trotz des Inkrementoperators 0 ausgibt.
Das obige ist der detaillierte Inhalt vonWarum führt „j = j' dazu, dass „j' in Java 0 bleibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!