【发布时间】:2015-07-12 01:56:58
【问题描述】:
根据 Java 语言规范:
评估尊重括号和优先级
除了使用以下数学运算:
int i = 3;
int j = 3 * (9 + 3);
System.out.println(j); //results to 36
还有其他适用此规则的示例吗?我尝试使用
int i = 0;
int z = 0;
if(i++ < 5 || (++z <0 && 5 > z++) || 6 < ++i){
System.out.println("Routed here");
}
System.out.println("i: " + i);
System.out.println("z: " + z);
但结果是 i:1 和 z:0。看来对那个if例子的评价还是从左到右的。
【问题讨论】:
-
我知道你不知道短路评估。但我仍然不明白你到底在期待什么,这与评估顺序有什么关系?
-
@sstan 我知道短路是如何工作的,评估是从左到右的,但我很困惑,因为在阅读了 JLS 的那部分后,我认为 Java 在评估时会偏爱括号
标签: java