[英]Java OR operator precedence
如果b
是假的,如何在Java中链接条件语句,而不是检查c
?
如果a
和c
为假,且b
为真,那么会检查c
吗?
if (a || b || c)
我正在寻找PHP与OR
和||
之间存在差异的类似功能
Java ||
如果左操作数为true
则operator(logical或operator)不会计算其他参数。 如果你想这样做,你可以使用|
(按位或运算符),虽然根据名称,这有点像黑客。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23
因此,&&计算与布尔操作数相同的结果。 它的不同之处仅在于有条件地而不是总是评估右侧操作数表达式。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24
因此,|| 计算与|相同的结果 在布尔或布尔操作数上。 它的不同之处仅在于有条件地而不是总是评估右侧操作数表达式。
额外:依赖于这些语义来有条件地调用具有副作用的代码被认为是错误的编程风格。
c
不会被检查。 为了证明这一点,您可以使用以下代码:
boolean a() {
System.out.println("a")
return false;
}
boolean b() {
System.out.println("b")
return true;
}
boolean c() {
System.out.println("c")
return true;
}
void test() {
if(a() || b() || c()) {
System.out.println("done")
}
}
输出将是:
a
b
done
if(a || b || c)
对于你的情况,
a为真,则b和c未检查。
a为假,b为真,则不检查。
a和b为假,然后检查c。
首先评估运算符的左侧
如果a
为假且b
为真,则不会评估c
。
请参阅此答案 ,解决Java中逻辑运算符的短路问题。
1)如何在Java中链接条件语句,如果b为false,则不检查c ?
c
然后是无关紧要的 if (a || b)
if (a || (b && c))
2)如果a和c为假,且b为真,那么会检查c吗? [if(a || b || c)]
||
进行短路评估。 所以,如果a
是false
, b
将被检查,如果b
为真, c
将不检查 有关短路评估的更多信息: 请参阅
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.