if ( a > b) {
return true;
}
return false;
使用上面的代码,Netbeans 会发出"Redundant if statement"
警告,并建议将其更改为:
return a > b;
我认为第一个版本更容易阅读,并且更喜欢在我的代码中使用它。我想知道与建议的相比,它是否有任何缺点。
if ( a > b) {
return true;
}
return false;
包括在堆栈上推送a
的值,在堆栈上推送b
的值,弹出两者并检查>
的结果。如果是 true
,则将 true
的值推送到堆栈上,然后弹出并返回它。如果是 false
,则分支到字节码的更下方,将 false
的值推到堆栈上,弹出并返回。
在以下情况下:
return a > b;
您将 a
和 b
的值推送到堆栈上,然后弹出这些值并将对这些值的>
结果推送到堆栈上。然后弹出该值并返回它。
所以
return a > b;
在字节码级别效率明显更高。
(IMO,我发现第二个更具可读性,我相信大多数人也会。
从编译器的角度来看,您的代码确实包含一些额外的计算。需要为布尔值(您正在返回)分配内存并进行>b 计算。A>b 返回布尔值,所以如果你返回它很容易。不过,它们在逻辑上都是一样的。