gpt4 book ai didi

java - 使用 Boolean.FALSE/.TRUE 初始化 boolean 值 - 为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:08 24 4
gpt4 key购买 nike

在我们公司的一些项目代码中,我经常看到这样的内容:

boolean foo = Boolean.FALSE;

除了 AFAIK 我只需要在 Java 中初始化局部变量这一事实(没有像 Pascal 中那样的随机值)以及特别是对于 boolean 值我经常想要初始化的事实,我在这里错过了什么?为什么不:

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

因此,在不太了解这一点的情况下,我猜想更多的语句意味着更多的执行时间,所以这不仅是错误的,而且从长远来看也会更慢。

最佳答案

boolean foo = Boolean.FALSE;

这是一段奇怪且不必要的复杂代码,由可能不太了解 Java 的人编写。你不应该写这样的代码,PMD 和 FindBugs 对此进行标记是正确的。

Boolean.FALSE 是一个自动拆箱的 java.lang.Boolean 对象;编译器基本上将其翻译为:

boolean foo = Boolean.FALSE.booleanValue();

I don't have to initialize variables in Java at all...

成员变量不需要显式初始化;如果你不这样做,它们将被初始化为一个默认值(在 boolean 的情况下为 false)。局部变量确实需要显式初始化;如果您尝试在未初始化的情况下使用局部变量,编译器将报错。

关于java - 使用 Boolean.FALSE/.TRUE 初始化 boolean 值 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com