自 Java 7 以来,Java 中的三元运算符仅计算一个表达式 - 这在 Java 1.6 及更低版本中是否有所不同?
在准备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时,三元运算符有什么变化吗?