論理演算と短絡評価
たまたま、こんなコードを見かけた。
// s1 = "aa", s2 = "bb" if (s1.equals("aa") & s2.equals("bb")) { // ↑ここがポイント }
これってありなの? しばし困惑。ありという前提なら、理解はできる。ただ、この場合は短絡評価を行うのが定石(だよね?)なので、今まで遭遇することすらなかったのである。
下記のリンク先にもあるけど、短絡評価かどうかは正しく認識しておかなければならない。
String s = null; if (s != null && s.equals("")); // 右辺は評価されずOK if (s != null & s.equals("")); // 右辺が評価されNullPointerException
"&","|","^"は、数値の場合はビット演算を行うが、booleanの場合は論理演算を行う。それほど役に立つわけではないが、次のような式も成り立つ。私は今まで、排他的論理和(XOR)は2番目しか使えないものと思っていた。
if (true ^ false); if (true != false);
参考