比较布尔值

3
我可以帮助您翻译关于it技术方面的内容,以下是您需要翻译的文本:

我有一个名为testCheck的复选框。当用户勾选时,它的值变为TRUE。我能够使用以下方法实现TRUE / FALSE的比较:

1.

if (testCheck.getValue() == Boolean.TRUE) {

   // Respective Code

}

2.

if (testCheck.getValue().equals(Boolean.TRUE)) {

   //Respective Code
}

3.

if (testCheck.getValue()) {

   //Respective Code
 }

我的问题:

  • 有什么区别吗?
  • 如果是的话,哪种实现方式最好?
5个回答

4
答案如下:
  • 对于编译器来说并没有任何区别:好的优化器将生成相同的代码。但是对于人类(开发人员、测试人员、支持人员等)而言,其可读性存在差异。
  • 第三个选项更为自然,因此更易于阅读。

因此,期望的代码应遵循“最少惊奇原则”。

  if (testCheck.getValue()) {
    ...
    //Respective Code
  }

4

这要看情况…

如果testCheck.getValue()的返回类型是boolean,第三个选项就可以了。

但是如果它是Boolean(大写B),我会这样做:

Boolean.TRUE.equals(testCheck.getValue())

为避免自动装箱期间的NPE。

1
我更喜欢第三个选项。它比较优雅。由于testCheck.getValue()计算为布尔类型,因此您可以在if条件语句中使用它。
在Java中,使用 == 运算符时,我们检查两个引用是否指向内存中的同一个对象。
要检查两个对象是否有意义地相等,请使用.equals()方法。

1
Is there any difference ?

只有可读性上的差异。

If yes, Which one is the best way of implementation ?

最后一种方法可能是最好的选择,如果你希望你的代码能够被快速阅读和理解。

0

有什么区别吗?

是的,有。

如果有的话,哪种实现方式最好?

第三种。


1
如果每个人都像你这样回答,我认为人们在SO上不会学到太多东西。长远来看,是非答案如果没有解释为什么,并不是很有帮助。 - Joffrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接