在准备Oracle认证Java SE 8程序员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时,关于三元运算符有什么变化吗?