最初の部分が 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");
}
最初の部分が 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");
}
JLS §15.23から:
条件付き AND 演算子 && は & (§15.22.2) に似ていますが、左側のオペランドの値が true の場合にのみ右側のオペランドを評価します。
いいえ、例外は発生しません。
明らかに、これはシングル スレッドまたはスレッド セーフ環境を使用していることを前提としています。可視性の問題をミックスに導入した場合、それは誰にもわかりません。
SoP のインポートを含め、それらの行が静的メイン内に記述されていると仮定すると、例外はスローされず、出力s2
されます。
X/0
&& は左の式を最初にチェックするため、コードで評価されることはありません。したがって、何もスローされません。