0

Will this code not evaluate the divide by zero portion of the if statement since the first part evaluates to false? If so, is this true for all cases in all Java IDEs? Or will certain compilers throw the exception?

int n = 0;
int x = 5;
if (n != 0 && x / n > 100) {
    System.out.println(" s1");
} else {
    System.out.println("s2");
}
4

2 回答 2

1

JLS §15.23

条件与运算符 && 类似于 &(第 15.22.2 节),但仅当其左侧操作数的值为真时才计算其右侧操作数。

所以不,你不会得到例外。

显然,这假设您有一个单线程或线程安全的环境 - 如果您在混合中引入可见性问题,那么这是任何人的猜测。

于 2015-04-22T15:29:02.480 回答
0

假设我们包含了 SoP 的导入,并且这些行写在一个静态 main 中,不会抛出异常,并且s2会被打印出来。 X/0永远不会在您的代码中进行评估,因为 && 先检查左表达式,因此,它永远不会抛出任何东西。

于 2015-04-22T15:27:11.097 回答