gpt4 book ai didi

java - Java 上 Boolean.booleanValue 函数的好处或用途?

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:43 24 4
gpt4 key购买 nike

所以,我看到了这行代码:

Boolean variable = false;
/* ..stuff.. */
if(variable.booleanValue() == false) {
/* ..more stuff..*/
}

我已经完成了,在不同的地方:

Boolean variable = false;
/* ..my stuff..*/
if(!variable) {
/* ..more of my stuff..*/
}

问题是:第一个代码片段与第一个代码片段的区别/优势是什么?

长版本是:鉴于我可以将 boolean 变量用作原始( boolean )变量,执行 variable.booleanValue() 甚至将其与 boolean 值进行比较有什么意义?如果变量未初始化,这是否也引入了空指针异常的风险(在代码上不可能,但是嘿)?

在什么情况下建议在“变量”之上使用 variable.booleanValue?

最佳答案

两个片段的行为没有区别。

JLS 5.1.8 :

At run time, unboxing conversion proceeds as follows:

If r is a reference of type Boolean, then unboxing conversion converts r into r.booleanValue()

因此 if (variable) {...} 将执行为 if (variable.booleanValue()) {...}。因为它们是完全等价的,所以如果 variable == null,它们同样容易受到 NPE 的影响。

这意味着显式调用 booleanValue() 的一个可能的小优势是您可以立即看到 variable 正在被取消引用,而 variable == false 稍微不太明显。

是否添加 == false 或否定是个人喜好问题,我更愿意避免使用 == 运算符将 boolean 表达式与 进行比较truefalse

但我认为更重要的是完全避免 Boolean 并尽可能使用原始类型。

关于java - Java 上 Boolean.booleanValue 函数的好处或用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594600/

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