Java中的三元运算符自Java 7起只评估一个表达式 - 在Java 1.6及更低版本中是否有所不同?

18 浏览
0 Comments

Java中的三元运算符自Java 7起只评估一个表达式 - 在Java 1.6及更低版本中是否有所不同?

准备参加Oracle认证的Java SE 8初级程序员1考试时,我在官方学习指南中看到了关于三元表达式的以下段落:

三元表达式的评估

自Java 7开始,三元运算符的右侧表达式中只有一个会在运行时评估。类似于短路运算符的方式,如果三元运算符中的两个右侧表达式之一执行了副作用,那么该副作用可能不会在运行时生效。让我们通过以下示例来说明这个原则:[...]

它说只评估两个表达式中的一个,用以下示例进行演示:

int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;

在这里,只有y会增加,但z不会,这正是你所期望的。

我遇到的困惑是段落开头(用黄色标记)中的"As of Java 7, ..."这句话。我用Java 1.6测试了相同的代码,但无法找到行为上的差异。根据段落中给出的信息,我预计Java 1.6会评估两个表达式。有人知道他们在"As of Java 7, ..."这句话中想表达什么吗?

编辑:为了避免混淆:问题归结为,既然他们写了'As of Java 7',在从Java 6切换到Java 7时,三元运算符是否有任何变化?

0