En me préparant à l'examen Oracle Certified Associate Java SE 8 Programmer 1, je suis tombé sur le paragraphe suivant sur l'expression ternaire dans le guide d'étude officiel:
Évaluation des expressions ternaires
À partir de Java 7, une seule des expressions de droite de l'opérateur ternaire sera évaluée lors de l'exécution. D'une manière similaire aux opérateurs de court-circuit, si l'une des deux expressions de droite dans un opérateur ternaire produit un effet secondaire, alors il peut ne pas être appliqué au moment de l'exécution. Illustrons ce principe avec l'exemple suivant: [...]
Il dit qu'une seule des deux expressions est évaluée, ce qui montre l'exemple suivant:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Ici, seulement y
incrémente, mais z
pas, comme vous vous en doutez.
Ce que je suis en train de trébucher, c'est le début du paragraphe (marqué en jaune) où il est dit "À partir de Java 7, ...". J'ai testé le même code avec Java 1.6 et je ne trouve pas de différence dans le comportement. Je m'attendais à ce que Java 1.6 évalue les deux expressions uniquement à partir des informations données dans le paragraphe. Quelqu'un a-t-il une idée de ce qu'il voulait dire avec "A partir de Java 7, ..."?
Edit: Pour éviter toute confusion: Cela se résume à la question, puisqu'ils écrivent «À partir de Java 7», y a-t-il eu quelque chose qui a changé concernant l'opérateur ternaire, lors du passage de Java 6 à Java 7?