Als ich mich auf die Prüfung zum Oracle Certified Associate Java SE 8-Programmierer 1 vorbereitete, stieß ich im offiziellen Studienhandbuch auf den folgenden Absatz über den ternären Ausdruck:
Auswertung
ternärer Ausdrücke Ab Java 7 wird zur Laufzeit nur einer der rechten Ausdrücke des ternären Operators ausgewertet. In ähnlicher Weise wie bei den Kurzschlussoperatoren wird einer der beiden rechten Ausdrücke in einem ternären Operator möglicherweise nicht zur Laufzeit angewendet, wenn er einen Nebeneffekt ausführt. Lassen Sie uns dieses Prinzip anhand des folgenden Beispiels veranschaulichen: [...]
Es heißt, dass nur einer der beiden Ausdrücke ausgewertet wird, was anhand des folgenden Beispiels demonstriert wird:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Hier nur y
inkrementiert, aber z
nicht, wie Sie es erwarten würden.
Ich stolpere über den Anfang des Absatzes (gelb markiert) mit der Aufschrift "Ab Java 7, ...". Ich habe den gleichen Code mit Java 1.6 getestet und kann keinen Unterschied im Verhalten feststellen. Ich habe erwartet, dass Java 1.6 beide Ausdrücke nur anhand der im Absatz angegebenen Informationen bewertet. Hat jemand eine Idee, was er mit "Ab Java 7, ..." sagen wollte?
Bearbeiten: Um Verwirrung zu vermeiden: Es läuft auf die Frage hinaus: Hat sich beim Wechsel von Java 6 zu Java 7 etwas geändert, da sie "Ab Java 7" schreiben?