Java中的三元运算符自Java 7起只评估一个表达式 - 在Java 1.6及更低版本中是否有所不同?
- 论坛
- Java中的三元运算符自Java 7起只评估一个表达式 - 在Java 1.6及更低版本中是否有所不同?
18 浏览
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时,三元运算符是否有任何变化?