Подготовка к экзамену Oracle Certified Associate Java SE 8 Programmer 1, я наткнулся на следующий параграф о тройном выражении в официальном учебном пособии:
Оценка термической экспрессии
Начиная с Java 7, только одно из правых выражений тернарного оператора будет оцениваться во время выполнения. Аналогично операторам короткого замыкания, если одно из двух правых выражений в тернарном операторе выполняет побочный эффект, то оно не может применяться во время выполнения. Давайте проиллюстрируем этот принцип следующим примером: [...]
В нем говорится, что оценивается только одно из двух выражений, демонстрирующееся в следующем примере:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Здесь только y
увеличивается, но z
не работает, как и следовало ожидать.
То, что я спотыкаюсь, - это начало абзаца (помечено желтым цветом), где говорится: "С Java 7,...". Я тестировал один и тот же код с Java 1.6, и я не могу найти разницу в поведении. Я ожидал, что Java 1.6 будет оценивать оба выражения только из информации, приведенной в параграфе. Кто-нибудь имеет представление о том, что они хотели сказать "с Java 7,..."?
Изменить:. Чтобы избежать путаницы: это сводится к вопросу: поскольку они пишут "Как на Java 7", было ли что-то, что изменилось в отношении тернарного оператора при переходе с Java 6 на Java 7?