在我们公司的一些项目代码中,我经常看到这样的内容:
boolean foo = Boolean.FALSE;
除了 AFAIK 我只需要在 Java 中初始化局部变量(没有像 Pascal 那样的随机值)之外,除了特别是对于布尔值我经常想要初始化的事实之外,我在这里错过了什么?为什么不:
boolean foo = false;
我不明白。PMD 和 Findbugs 等代码分析工具也标记了这一点。但为什么?
编辑:除了对字节码了解太多之外,我创建了一个示例类并对其进行了反编译。Boolean.FALSE 转到:
0: getstatic #15 // Field java/lang/Boolean.FALSE:Ljava/lang/Boolean;
3: invokevirtual #21 // Method java/lang/Boolean.booleanValue:()Z
6: istore_1
“假”变体去了:
0: iconst_1
1: istore_1
因此,在对此没有太多了解的情况下,我猜想更多的语句意味着更多的执行时间,所以从长远来看,这不仅是错误的,而且速度也会变慢。