Preparando-me para o exame Oracle Certified Associate Java SE 8 Programmer 1, encontrei o seguinte parágrafo sobre a expressão ternária no Guia de Estudo oficial:
Avaliação da expressão ternária A
partir do Java 7, apenas uma das expressões à direita do operador ternário será avaliada em tempo de execução. De maneira semelhante aos operadores de curto-circuito, se uma das duas expressões da mão direita em um operador ternário executar um efeito colateral, então ela não pode ser aplicada em tempo de execução. Vamos ilustrar esse princípio com o seguinte exemplo: [...]
Diz que apenas uma das duas expressões é avaliada, demonstrando com o seguinte exemplo:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Aqui, apenas y
incrementa, mas z
não, como seria de esperar.
O que estou descobrindo é o início do parágrafo (marcado em amarelo) onde diz "As of Java 7, ...". Testei o mesmo código com Java 1.6 e não consigo encontrar diferença no comportamento. Eu esperava que o Java 1.6 avaliasse ambas as expressões apenas a partir das informações fornecidas no parágrafo. Alguém tem uma ideia do que eles queriam dizer com "As of Java 7, ..."?
Edit: Para evitar confusão: Resume-se à pergunta, uma vez que escrevem 'As of Java 7', houve algo que mudou em relação ao operador ternário, ao mudar de Java 6 para Java 7?