java 演算子の優先順位(&& と ||)

あるjavaのソースを見ながら調査をしているときのことでした。

下の結果がどうなるのか、理解してませんでした。

public class X {
public static void main(String[] args) {
System.out.println(" true || false && false -> " + (true || false && false));
}
}

演算子 || と && の優先順位を同じだと思いこんでいたため、左の || から評価されたあと && が評価されて false になると思ったんですが、実際は違いました。

実行結果
true ||  false  && false  -> true

http://www.javaroad.jp/java_operator7.htm

優先順位 && は || より優先順位が高いのを知りました。常識の範囲なんでしょうかね?

まとめ

評価順序がわかるように、明示的に中カッコで囲む方が良いと思った。紛らわしいから、こんな順序に依存したコードは、書かないほうがいい。

2 Comments

  • こんにちは。Google で検索してやってきました。
    Java に限らず、コンピューターの言語は昔からそうですよ。&& が積(論理積)、|| が和(論理和)なので、算術演算子の積(*)と和(+)の優先順位の優劣と同じにしてあるのだろうと思います。

  • unibonさん、コメントありがとうございます。
    > Java に限らず、コンピューターの言語は昔からそうですよ。
    そうなのですか。知らなかったです(汗
    「積(*)と和(+)」と同じと考えると確かに自然だし、すっきり理解できますね。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.