Al prepararme para el examen de Programador 1 de Java SE 8 Certified Associate de Oracle, encontré el siguiente párrafo sobre la expresión ternaria en la Guía de estudio oficial:
Evaluación de expresiones ternarias
A partir de Java 7, solo una de las expresiones de la derecha del operador ternario se evaluará en tiempo de ejecución. De manera similar a los operadores de cortocircuito, si una de las dos expresiones de la derecha en un operador ternario produce un efecto secundario, entonces no se puede aplicar en tiempo de ejecución. Ilustremos este principio con el siguiente ejemplo: [...]
Dice que solo se evalúa una de las dos expresiones, demostrando con el siguiente ejemplo:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Aquí, solo se y
incrementa, pero z
no, como era de esperar.
Con lo que me tropiezo es con el comienzo del párrafo (marcado en amarillo) donde dice "A partir de Java 7, ...". Probé el mismo código con Java 1.6 y no puedo encontrar una diferencia en el comportamiento. Esperaba que Java 1.6 evaluara ambas expresiones solo a partir de la información proporcionada en el párrafo. ¿Alguien tiene una idea de lo que quería decir con "A partir de Java 7, ..."?
Editar: Para evitar confusiones: se reduce a la pregunta, ya que escriben 'A partir de Java 7', ¿hubo algo que cambió con respecto al operador ternario, al cambiar de Java 6 a Java 7?