use*_*155 3 java boolean return
我对Java中的return语句中布尔变量的含义(评估)有疑问.
我知道:
if (var) { ... }
Run Code Online (Sandbox Code Playgroud)
是相同的:
if (var==true) { ... }
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我们明确地说var == true,但我们不需要这样做,因为无论如何Java都将var计算为true.我希望我理解这一点.
我的问题是:返回布尔变量时是否相同?当我们有退货声明?
例如,任务指定:方法LooksBetter()仅在b <a时才返回true.我的解决方案是:
public boolean looksBetter() {
if (b < a) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
简单的答案是:
public boolean lookBetter() {
return b < a;
}
Run Code Online (Sandbox Code Playgroud)
因此,似乎在这里我们再次有这个隐含的假设,即在b <a == true的情况下,方法的返回为真.对不起......这看起来很微不足道,但我对此感到不舒服,我不知道为什么.谢谢.
Bil*_*ler 11
是的,所有布尔都是如此.您可以考虑if(表达式)评估'表达式'以查看它是'true'还是'false'.当你这样做
if(b < a == true)
Run Code Online (Sandbox Code Playgroud)
它首先测试是否b <a,如果是,它现在测试:
if(true == true)
Run Code Online (Sandbox Code Playgroud)
它现在测试true == true(显然它确实如此).当你省去额外的'== true'时,Java没有做任何棘手的事情,它只需要少执行一次测试.没有理由你不能说:
if(((b < a == true) == true) == true)
Run Code Online (Sandbox Code Playgroud)
但是每次看到等号时,它都会导致Java执行额外的测试.
不要让代码复杂化.如果您觉得需要说"a <b == true",那么您可以遵循它的逻辑错误(结论+混淆)并说" ((((((((...(a<b) == true) == true).... == true)"
"a <b"是一个布尔表达式.如果你已经有一个布尔值,为什么要将它与另一个布尔值进行比较?你不是使它更布尔值的方式.
| 归档时间: |
|
| 查看次数: |
57962 次 |
| 最近记录: |