java - "Equality test with boolean literal"- 测试 boolean 值和使用 == 之间的区别

标签 java coding-style codepro

<分区>

我正在使用 Code Pro查看我的应用程序代码和工具,并返回消息:

Warning: equality test with boolean literal

对于这段代码:

boolean valid;
if(valid == true)

可以通过以下方法修复:

if(valid) 

我有两个问题:

  1. 这只是一种良好的编码习惯吗?
  2. 在内存优化方面还有其他好处吗? 性能优化?

最佳答案

对于更直接的 boolean 表达式:

boolean valid = true;

if(valid) {
}

生成如下字节码:

0: iconst_1      
1: istore_1      
2: iload_1       
3: ifeq          6
6: return     

鉴于扩展比较:

boolean valid = true;

if(valid == true) {
}

生成如下字节码:

0: iconst_1      
1: istore_1      
2: iload_1       
3: iconst_1      
4: if_icmpne     7
7: return

我怀疑 ifeqif_icmpne 的执行速度不同,所以 if(valid == true) 的额外成本真的只是额外的常量值,可以忽略不计。

总而言之,确实没有性能差异,CodePro 将您的代码标记为单独的最佳实践。

关于java - "Equality test with boolean literal"- 测试 boolean 值和使用 == 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583415/

相关文章:

java - 写出一个无限和的公式,为什么它不能像写的那样工作?

Java android改变xml文件中的颜色

java - java中的getRuntime.exec()是否理解*?

java - 在Java代码约定中,实例变量应该放在方法之前还是方法之后?

python - 访问远程相关 Django 模型的最佳实践

java - 在 Ant 任务中运行 "headless Eclipse"

java - 是否有 Sonar、Findbugs 或 PMD 规则来检测 CodePro 检测到的这种可能的 NPE?

java - Google GCM 中是否强制使用 JSON 形式的请求?

sql - LINQ 查询 : SQL-style abbreviations or spell it out?

java - Findbugs 与 Google CodePro AnalytiX(Eclipse 插件)