这个if语句会抛出异常还是忽略它?

时间:2015-04-22 15:22:01

标签: java exception javacompiler

此代码是否不会评估if语句的除零部分,因为第一部分的计算结果为false?如果是这样,对于所有Java IDE中的所有情况都是如此吗?或者某些编译器会抛出异常吗?

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

2 个答案:

答案 0 :(得分:1)

来自JLS §15.23

  

条件和操作员&&就像& (§15.22.2),但仅在其左侧操作数的值为真时才计算其右侧操作数。

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

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

答案 1 :(得分:0)

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