Готуючись до іспиту 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?