当我使用OR运算符时,只有一个表达式必须为真。第一个if语句是否更有效,因为java只检查第一个表达式?或者java检查两者吗?
public class Test {
public static void main(String args[]) {
boolean test = true;
if (test || calculate()) {
// do something
}
if (calculate() || test) {
// do something
}
}
public static boolean calculate() {
// processor-intensive algorithm
}
}
答案 0 :(得分:9)
if (test || calculate())
当calculate()
为真时,永远不会调用test
,因为||
运算符被短路,因此当test
为真时,该语句更有效。
答案 1 :(得分:1)
是的,确实如此。因为永远不会调用calculate()
,只要test
为真且它是||
语句的契约。
来自§15.24,
条件或运算符||运算符就像|但是 仅当左手操作数的值为左手时,才评估其右手操作数 操作数是假的。
答案 2 :(得分:0)
有两个或运营商:
if ( condition | condition2 ){
在这里,无论第二个条件的结果如何,它都将测试第二个条件。
if ( condition || condition2 ){
此处,只有在第一个条件返回false时才会检查第二个条件。
对于'和'运算符&运算符实现了双重运算符的相同方式。和&&