java 演算子の優先順位(&& と ||)
2007/08/06
2021/10/09
ある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
優先順位 && は || より優先順位が高いのを知りました。常識の範囲なんでしょうかね?
まとめ
評価順序がわかるように、明示的に中カッコで囲む方が良いと思った。紛らわしいから、こんな順序に依存したコードは、書かないほうがいい。
こんにちは。Google で検索してやってきました。
Java に限らず、コンピューターの言語は昔からそうですよ。&& が積(論理積)、|| が和(論理和)なので、算術演算子の積(*)と和(+)の優先順位の優劣と同じにしてあるのだろうと思います。
unibonさん、コメントありがとうございます。
> Java に限らず、コンピューターの言語は昔からそうですよ。
そうなのですか。知らなかったです(汗
「積(*)と和(+)」と同じと考えると確かに自然だし、すっきり理解できますね。