OR运算符 - 哪种语句更有效?

时间:2015-01-28 09:21:54

标签: java

当我使用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
    }
}

3 个答案:

答案 0 :(得分:9)

if (test || calculate())
calculate()为真时,

永远不会调用test,因为||运算符被短路,因此当test为真时,该语句更有效。

答案 1 :(得分:1)

是的,确实如此。因为永远不会调用calculate(),只要test为真且它是||语句的契约。

来自§15.24

  

条件或运算符||运算符就像|但是   仅当左手操作数的值为左手时,才评估其右手操作数   操作数是假的。

答案 2 :(得分:0)

有两个或运营商:

if ( condition | condition2 ){

在这里,无论第二个条件的结果如何,它都将测试第二个条件。

if ( condition || condition2 ){

此处,只有在第一个条件返回false时才会检查第二个条件。

对于'和'运算符&运算符实现了双重运算符的相同方式。和&&