class Test{ public static void main(String[] args){ boolean b = true; if(b = false)

Java33閲覧

ベストアンサー

0

ThanksImg質問者からのお礼コメント

理解できました。 詳しい説明ありがとうございます。

お礼日時:1/28 16:07

その他の回答(3件)

0

Javaでは、=は代入演算子です。 b = false は、 『bにfalseを代入し、式の値として、代入結果であるfalseを返す』 という処理になります。 その為、bにはfalseが代入され、ifの実行文は実行されずに、 2つ目の、printlnで、bの値、つまり、代入されたfalseが表示されます。 if文での比較的演算子と代入演算子の取り違えは、 C言語でよくあるケアレスミスで、C言語はそのミスをチェックできず、そのまま通してしまう為、バグの温床となっています。 その為、Javaでは、ifの()の中の値はbooleanでなくてはならないと定められ 数値等での単純な代入ミスはエラーで弾けるようになりましたが、 今回は、間違った書き方の結果が、booleanである為、そのままチェックをすり抜けてしまっていることが、 想像と実際の齟齬を生んだ原因です。

0

if(b = false) の部分は、比較でなく代入です。 結果的に以下と同じ実行結果になります boolean b = true; System.out.println(b = false);