【发布时间】:2015-06-30 09:01:03
【问题描述】:
由于第一部分的计算结果为假,这段代码是否不会计算 if 语句的除以零部分?如果是这样,是否适用于所有 Java IDE 中的所有情况?或者某些编译器会抛出异常?
int n = 0;
int x = 5;
if (n != 0 && x / n > 100) {
System.out.println(" s1");
} else {
System.out.println("s2");
}
【问题讨论】:
-
所有(正确的)Java 编译器和 JVM 都将以相同的方式运行它。至于它会做什么......为什么不自己试试看呢?
-
Java 使用 short circuit evaluation 进行布尔运算。仅评估所需的数量。这是JLS 15.23强制。
-
糟糕,由于错误的欺骗原因关闭了这个。让我试着找到一个更好的......
-
@BoristheSpider 我不认为这是一个短路评估问题。如果你声明
final int n = 0;会是这样,但事实并非如此。 -
@LuiggiMendoza 我不明白:
if(a && b)不会评估表达式b是a == false。
标签: java exception javacompiler