Was sind Inkrement- und Dekrement-Operatoren und worin besteht der Unterschied zwischen den voran- und den nachgestellten Varianten?

Inkrement- und Dekrement-Operatoren erhöhen bzw erniedrigen den Wert einer Variablen um 1.

Die beiden Operatoren existieren in je zwei Varianten, als Präfix ( ++var ) und als Postfix ( var++ ). Beide inkrementieren oder dekrementieren den in der Variablen gespeicherten Wert.

i++ // entspricht i = i + 1
i-- // entspricht i = i - 1
++i // entspricht i = i + 1
--i // entspricht i = i - 1

Die Operatoren müssen auf eine Variable und dürfen nicht auf ein numerisches Literal angewendet werden. Entsprechende Multiplikations- oder Divisionsvarianten gibt es natürlich ebenfalls nicht.

5++ // Fehler!
i** // Fehler da unsinnig!
i// // Fehler da unsinnig!

Der Unterschied zwischen Prä- und Postfix besteht in der Ausführungsreihenfolge. Beim Präfix wird es vor der Weiterverwendung, beim Postfix nach der Weiterverwendung der Variablen ausgeführt.

Die folgenden Multiplikations-Beispiele erläutern das Verhalten. Ihre Auswertung erfolgt von links nach rechts. In den Kommentierungen sind die jeweiligen Ergebnisse dargestellt.

Inkrement als Postfix

int i = 5, k = 5;
System.out.println(--i * k++);		// 20
System.out.println(i + ", " + k);	// 4, 6

Ausführungsreihenfolge:

Inkrement als Präfix

int i = 5, k = 5;
System.out.println(--i * ++k);		// 24
System.out.println(i + ", " + k);	// 4, 6

Ausführungsreihenfolge:

Vorzeichen...

Die Inrement- und Dekrement-Operatoren dürfen nicht mit Vorzeichen-Operatoren verwechselt werden. Im Gegensatz zu jenen, führen diese keine Zuweisung durch, sodass sich der negative oder positive Wert nur auf die unmittelbar folgende Operation bezieht.

...mit Inkrement als Präfix

int i = 5, k = 5;
System.out.println(i-- * -++k);		// -30
System.out.println(i + ", " + k);	// 4, 6

Ausführungsreihenfolge:

...mit Inkrement als Postfix

int i = 5, k = 5;
System.out.println(i * -k++);		// -25
System.out.println(i + ", " + k);	// 5, 6

Ausführungsreihenfolge:

Man beachte, dass das negative Vorzeichen bei der Ausgabe der Variablen nicht übernommen wird.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.