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++中有一个这种行为的名称,但对于我的生活,我不记得它是什么.
将评估条件,直到一个子条件评估为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()不会计算调用该方法的第三个条件.
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |