Готовясь к экзамену 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?