冗余If语句警告

时间:2014-12-01 16:53:44

标签: java if-statement netbeans

if ( a > b) {
  return true;
}
return false;

使用上述代码,Netbeans会发出"Redundant if statement"警告,并建议将其更改为:

return a > b;

我认为第一个版本更易于阅读,并且更喜欢在我的代码中使用它。我想知道它与建议的相比是否有任何缺点。

2 个答案:

答案 0 :(得分:8)

if ( a > b) {
  return true;
}
return false;

包括在堆栈上推送a的值,在堆栈上推送b的值,弹出两者并检查>的结果。如果它是true,请在堆栈上推送true的值,然后弹出并返回它。如果它是false,则在字节码中进一步向下分支,在堆栈上推送false的值,弹出它并返回。

的情况下
return a > b;

您在堆栈上推送ab的值,然后弹出值并将>的结果推送到堆栈上。然后弹出该值并将其返回。

所以

return a > b;
在字节码级别,

不明显更高效。

(IMO我发现第二个更具可读性,我相信大多数人也会这么做。)

答案 1 :(得分:0)

从编译器的角度来看,您的代码确实包含了一些额外的计算。需要为布尔值(你返回)分配内存并进行> b计算。 A> b返回布尔值,所以如果你返回它很容易。 虽然他们都有相同的逻辑。