- ベストアンサー
&と|の演算子を使ったif文のプログラムについて
↓のプログラムの実行結果について質問します。 public class Test{ public static void main(String args[]){ if(methodA() & methodB() ){ System.out.print(1); }else{ System.out.print(2); } if(methodA() | methodB() ){ System.out.print(3); }else{ System.out.print(4); } } private static boolean methodA(){ System.out.print("A"); return false; } private static boolean methodB(){ System.out.print("B"); return true; } } 上記のプログラムを実行すると AB2AB3 と出力されるのですが、 何故こういう風になるのか教えていただけませんか? また、if文の中をそれぞれ if(methodA() & methodB() ) if(methodA() | methodB() ) と書き換えると A2A3 となるのですが、これについてもイマイチよく分かりません。 メソッドからfalseとtrueを戻り値として受け取り 演算子によって処理を分けているんでしょうけど、 どういう流れで処理が行われているのか 出力結果を見ても読めなくて・・・
- みんなの回答 (5)
- 専門家の回答
お礼
あっ、ごめんなさい! 「if(!methodA() || methodB() )」 ↑ ここに「!」が入ってました。 これならA3になりますよね。 う~ん…&と&&にこんな違いがあるなんて知りませんでした。 大変勉強になりました。 説明もとても分かりやすかったです。 どうもありがとうございました。