使用Java检查多个条件时的效率

S. *_*ave 5 java performance conditional-statements

我正在尝试刷新我的Java,因为它已经很长时间了,并开始在CodingBat.com上进行一些热身.(小心剧透可能会跟随);)

我刚刚做了一个非常简单的说法:

给定2个整数,a和b,如果它们是10或者它们的总和是10,则返回true.

make10(9,10)→true
使10 (9,9)→false使
10(1,9)→真

我的解决方案是:

public boolean makes10(int a, int b)
{
  if( a==10 || b==10)
    return true;
  else
  {
      if( (a+b)==10 )
          return true;
       else
          return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

给出的解决方案是:

public boolean makes10(int a, int b) {
  return (a == 10 || b == 10 || a+b == 10);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,a = 10或b = 10将给定解决方案的if语句终止并返回true,还是首先完成检查每个需要不需要的加法运算的条件?(即a + b)

在C++中有一个这种行为的名称,但对于我的生活,我不记得它是什么.

Kev*_*sox 6

将评估条件,直到一个子条件评估为true.如果第一个条件评估为true第二个,则不评估第三个条件.

这是or运营商的性质||.

请考虑以下示例:

public class Conditions {

    public static boolean isTrue(){
        System.out.println("Is True");
        return true;
    }

    public static boolean isFalse(){
        System.out.println("Is False");
        return false;
    }

    public static void main(String[] args) {
        if(isFalse() || isTrue() || isTrue()){
            System.out.println("Condition passes");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Is False
Is True
Condition passes
Run Code Online (Sandbox Code Playgroud)

请注意,isTrue()不会计算调用该方法的第三个条件.