@gomi_ningen's Website

Javaの短絡評価されない論理演算子

Java で論理演算を行うとき、もっぱら &&|| を利用すると思います。if (isHoge() && isFoo()) { ... } 的な感じで。

これらは短絡評価されるので、たとえば false && true という式があったとして、前者を評価した時点でこの式全体は false が返ることは明らかなので、後者の true は評価されません。

こんなコードは読みたくないのですが、もし boolean を返すメソッドが副作用を持っていて、短絡評価された場合当たり前ですが、動作に影響がでます。たとえば以下のような最悪な感じのメソッドを考えてみましょう。

private static boolean isTrueWithSideEffect() { System.out.println("hoge"); return true; } private static boolean isFalseWithSideEffect() { System.out.println("foo"); return fal...
Read More

Copyright © 53ningen.com