How to chain conditional statements in Java in a way that if b
is false, than do not check c
?
If a
and c
are false, and b
is true, does c
will be checked?
if (a || b || c)
I am looking for similar feature that PHP holds with difference between OR
and ||
The Java ||
operator (logical or operator) does not evaluate additional arguments if the left operand is true
. If you wanted to do that, you can use |
(bitwise or operator), although, according to the name, this is a little of a hack.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23
Thus, && computes the same result as & on boolean operands. It differs only in that the right-hand operand expression is evaluated conditionally rather than always.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24
Thus, || computes the same result as | on boolean or Boolean operands. It differs only in that the right-hand operand expression is evaluated conditionally rather than always.
Extra: it is considered bad programming style to depend on these semantics to conditionally call code with side effects.
c
won't be checked. To prove this, you can use the following code:
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")
}
}
The output will be:
a
b
done
if (a || b || c)
for you case,
a is true then b and c not checked.
a is false and b is true then c not checked.
a and b are false then c is checked.
the left side of the operator is evaluated first
If a
is false and b
is true, then c
will not be evaluated.
See this answer that addresses short circuiting of logical operators in Java.
1) How to chain conditional statements in Java in a way that if b is false, than do not check c ?
c
then is immaterial if (a || b)
if (a || (b && c))
2) If a and c are false, and b is true, does c will be checked? [ if (a || b || c) ]
||
does short circuit evaluation. So if a
is false
, b
will be checked and if b
is true, c
won't be checked For more on short circuit evaluation: refer
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.