为了准备 Oracle 认证的助理 Java SE 8程序员1考试,我在正式的学习指南中看到了以下关于三元表达式的段落:
三元表达式计算
在 Java7中,只有三元运算符的右表达式之一会在运行时求值。与短路运算符类似,如果三元运算符中的两个右表达式之一产生了副作用,那么它可能不会在运行时应用。让我们用下面的例子来说明这个原则: [ ... ]
它说两个表达式中只有一个被求值,用下面的例子演示:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
在这里,只有 y
增量,但是 z
没有,正如您所期望的那样。
我偶然发现的是段落的开头(用黄色标记) ,其中写道“ As of Java7,...”。我用 Java 1.6测试了相同的代码,但是我没有发现它们的行为有什么不同。我期望 Java 1.6仅仅根据段落中给出的信息来计算这两个表达式。有没有人知道他们想说什么“ As of Java7,...”?
编辑: 为了避免混淆: 它归结为一个问题,因为他们写了‘ As of Java7’,当从 Java6切换到 Java7时,是否有任何关于三元运算符的改变?