This question already has answers here:
Java operators precedence
(2个答案)
5年前关闭。
嗨,我有这个例子:
结果:
和
结果:
在情况(1)中,我们将OR短路,而在第二种情况中,我们将OR短路。行为的差异从何而来?我知道表达式是从左到右求值的,并且AND的优先级比OR大,所以我不知道为什么情况2会发生这种情况?
此处
首先评估
因此结果输出为“ a”。
(2)
此处
首先评估
所以什么也没输出。
希望有道理
(2个答案)
5年前关闭。
嗨,我有这个例子:
(1)
if(false && false ||true){
System.out.println("a");
}
结果:
a
和
(2)
if(false && false | true){
System.out.println("a");
}
结果:
(empty)
在情况(1)中,我们将OR短路,而在第二种情况中,我们将OR短路。行为的差异从何而来?我知道表达式是从左到右求值的,并且AND的优先级比OR大,所以我不知道为什么情况2会发生这种情况?
最佳答案
(1)
if (false && false || true) {
System.out.println("a");
}
此处
&&
的优先级高于||
首先评估
false && false
得出的false
。false || true
得到评估结果true
。因此结果输出为“ a”。
(2)
if (false && false | true) {
System.out.println("a");
}
此处
|
的优先级高于&&
首先评估
false | true
得出的true
。false && true
得到评估结果false
。所以什么也没输出。
希望有道理