"使用布尔文字进行平等测试" - 测试布尔值和使用==之间的差异

ash*_*ish 3 java coding-style codepro

我正在使用Code Pro来查看我的应用程序代码,并使用以下消息报告该工具:

警告:使用布尔文字进行相等性测试

对于此代码:

boolean valid;
if(valid == true)
Run Code Online (Sandbox Code Playgroud)

可以使用以下方法修复:

if(valid) 
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 这只是一个很好的编码实践吗?
  2. 在内存优化或性能优化方面还有其他好处吗?

Per*_*ion 5

对于更直接的布尔表达式:

boolean valid = true;

if(valid) {
}
Run Code Online (Sandbox Code Playgroud)

生成以下字节代码:

0: iconst_1      
1: istore_1      
2: iload_1       
3: ifeq          6
6: return     
Run Code Online (Sandbox Code Playgroud)

而扩大比较:

boolean valid = true;

if(valid == true) {
}
Run Code Online (Sandbox Code Playgroud)

生成以下字节代码:

0: iconst_1      
1: istore_1      
2: iload_1       
3: iconst_1      
4: if_icmpne     7
7: return
Run Code Online (Sandbox Code Playgroud)

我怀疑ifeq并且if_icmpne执行速度不同,因此额外的成本if(valid == true)实际上只是额外的恒定值,这可以忽略不计.

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