0

最初の部分が false と評価されるため、このコードは if ステートメントのゼロ除算部分を評価しませんか? もしそうなら、これはすべての Java IDE のすべてのケースに当てはまりますか? または、特定のコンパイラが例外をスローしますか?

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から:

条件付き AND 演算子 && は & (§15.22.2) に似ていますが、左側のオペランドの値が true の場合にのみ右側のオペランドを評価します。

いいえ、例外は発生しません。

明らかに、これはシングル スレッドまたはスレッド セーフ環境を使用していることを前提としています。可視性の問題をミックスに導入した場合、それは誰にもわかりません。

于 2015-04-22T15:29:02.480 に答える
0

SoP のインポートを含め、それらの行が静的メイン内に記述されていると仮定すると、例外はスローされず、出力s2されます。 X/0&& は左の式を最初にチェックするため、コードで評価されることはありません。したがって、何もスローされません。

于 2015-04-22T15:27:11.097 に答える