如果b
为假,则如何在Java中链接条件语句,而不是检查c
?
如果a
和c
为false且b
为真,那么c
会被检查吗?
if (a || b || c)
我正在寻找PHP与OR
和||
答案 0 :(得分:14)
如果左操作数为||
,则Java true
运算符(逻辑或运算符)不会计算其他参数。如果你想这样做,你可以使用|
(按位或运算符),但根据名称,这有点像黑客。
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
因此,||计算与|相同的结果在布尔或布尔操作数上。它的不同之处仅在于有条件地而不是总是评估右侧操作数表达式。
额外:依赖于这些语义来有条件地调用具有副作用的代码被认为是错误的编程风格。
答案 1 :(得分:2)
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
答案 2 :(得分:1)
if(a || b || c)
对你来说,
a为真,然后b和c未检查。
a为假,b为真,则c未检查。
a和b为假,然后检查c。
首先评估运算符的左侧
答案 3 :(得分:0)
如果a
为false且b
为true,则不会评估c
。
请参阅此answer,解决Java中逻辑运算符的短路问题。
答案 4 :(得分:0)
1)如何在 b 为假的情况下在Java中链接条件语句,而不是检查 c ?
c
然后是无关紧要的if (a || b)
if (a || (b && c))
2)如果a和c为假,且b为真,那么会检查c吗? [if(a || b || c)]
||
进行短路评估。因此,如果a
为false
,则会检查b
,如果b
为真,则不会检查c
有关短路评估的更多信息:refer