簡単な質問です。Javaでは、ANDはORよりも優先されますか? たとえば、このコードはどのように解釈されますか?
if(statement1 && statement2 || statement3)
これはどれと同じですか?
if(statement1 && (statement2 || statement3))
また
if((statement1 && statement2) || statement3)
前もって感謝します。
簡単な質問です。Javaでは、ANDはORよりも優先されますか? たとえば、このコードはどのように解釈されますか?
if(statement1 && statement2 || statement3)
これはどれと同じですか?
if(statement1 && (statement2 || statement3))
また
if((statement1 && statement2) || statement3)
前もって感謝します。
はい。APIドキュメントには、演算子の優先順位をリストした表があります:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
しかし、なぜ &&
が よりも優先されるべきかを理解することは良い考えだと思います||
: 前者は多くの点で乗法作用ですが、後者は加法的作用です。2 つの独立したイベントA
とB
を考えて(A and B)
みp(A)*p(B)
ましょう。* が + よりも優先されるというよく知られた規則との類推により、論理演算子をそのように評価する必要がある理由が説明されます。(A or B)
p(A) + p(B)
演算子のOracleチュートリアルで 述べたように、演算子&&
はよりも優先されます||
注:どちらよりも&
優先順位|
が高く&&
、次に||
優先順位が等しい演算子は、左から右に評価されます (代入演算子を除く)。たとえば、順序の問題1 + 2 + "3"
と同じではありません。1 + (2 + "3")
同様に100 / 10 / 2 != 100 / (10 / 2)
代入演算子a *= b += 5
の場合は次と同じですa *= (b += 5)
はい、ドキュメントによると、 (括弧を使用&&
しない限り) が優先されます。||