Heim  >  Artikel  >  Java  >  Warum lässt „j = j ;“ in Java „j“ unverändert?

Warum lässt „j = j ;“ in Java „j“ unverändert?

DDD
DDDOriginal
2024-10-26 19:20:03466Durchsuche

Why does `j = j  ;` in Java leave `j` unchanged?

Post-Inkrement-Operator in Java

Der Post-Inkrement-Operator ( ) ist ein unärer Operator, der den Wert einer Variablen um 1 erhöht , seine Semantik kann etwas verwirrend sein.

Betrachten Sie das folgende Codesegment:

<code class="java">int j = 0;
for (int i = 0; i < 100; i++) {
  j = j++;
}
System.out.println(j); // prints 0</code>

Hier bleibt der Wert von j nach der Schleife 0. Dieses Verhalten ist auf den ersten Blick kontraintuitiv, kann aber durch die Untersuchung der vom Compiler durchgeführten Schritte verstanden werden:

  1. Bewerten Sie die rechte Seite: Der Ausdruck j wird ausgewertet, Dadurch wird der Wert von j von 0 auf 1 erhöht, aber der ursprüngliche Wert (0) zurückgegeben.
  2. Ergebnis zuweisen: Der resultierende Wert (0) wird j zugewiesen.

Im Wesentlichen speichert der Post-Inkrement-Operator den ursprünglichen Wert der Variablen, bevor er ihn erhöht. Dies ähnelt dem folgenden Codeblock:

<code class="java">int temp = j;
j++;
j = temp;</code>

Betrachten Sie im Gegensatz dazu das folgende Codesegment:

<code class="java">int a = 0, b = 0;
a = b++;
System.out.println(a); // prints 0
System.out.println(b); // prints 1</code>

Hier wird a der ursprüngliche Wert von b (0) zugewiesen. und dann wird b erhöht. Dieses Verhalten folgt der Regel, dass Zuweisungen mit Post-Fix-Inkrementierungsoperator zuerst die rechte Seite auswerten, die Variable erhöhen und dann den ursprünglichen Wert zuweisen.

Wenn wir dieselbe Logik auf das frühere Beispiel anwenden, können wir dies tun Sehen Sie, warum j = j zu 0 führt:

  1. Bewerten Sie die rechte Seite: j wird ausgewertet und gibt den ursprünglichen Wert von j (0) zurück.
  2. Weisen Sie das Ergebnis zu: Der resultierende Wert (0) wird j zugewiesen und überschreibt seinen inkrementierten Wert (1).

Daher kann der Post-Inkrement-Operator zu unerwarteten Ergebnissen führen Ergebnisse, wenn sie nicht richtig verstanden werden. Es ist wichtig zu bedenken, dass die Variable nach der Auswertung des Ausdrucks erhöht und der Variablen der ursprüngliche Wert zugewiesen wird.

Das obige ist der detaillierte Inhalt vonWarum lässt „j = j ;“ in Java „j“ unverändert?. 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