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)
我有两个问题:
对于更直接的布尔表达式:
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将您的代码标记为单独的最佳实践.