"&"と"&&"と"and"をもう一度。
未了だった「"&"と"&&"と"and"。」を再考してみます。実はif文を覚えた直後にもちょっと書き直してみたのですが、こんなコンパイル・エラーになって、解決できずにいました。
E:\study\02>javac testAndOr.java testAndOr.java:5: ここで 'void' 型を使用することはできません。 if (false & System.out.print("false & print\n")) {} ^
「なんでfalseが'void' 型なんだろう」と悩んだのですが、違いますね。System.out.printメソッドがvoid型で、'&'でつないでいるからその前にマークが行ってしまっているわけです。
修正したコードと実行結果はこんな感じ。
public class testAndOr { public static void main(String[] args) { boolPrint("[and]\n"); if (false & boolPrint("false & print\n")) {} if (false && boolPrint("false && print\n")) {} boolPrint("[or]\n"); if (true | boolPrint("true | print\n")) {} if (true || boolPrint("true || print\n")) {} } static boolean boolPrint (String s) { System.out.printf(s); return true; } }
E:\study\02>javac testAndOr.java E:\study\02>java testAndOr [and] false & print [or] true | print
「false && 出力文」や「true || 出力文」では、予想通り、出力文は実行されていないようです。