【问题标题】:Comparing Boolean Value比较布尔值
【发布时间】:2014-03-24 10:05:58
【问题描述】:

我有一个名为 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
 }

我的问题:

  • 有什么区别吗?
  • 如果是,哪一种是最好的实施方式?

【问题讨论】:

    标签: java gwt comparison boolean conditional-statements


    【解决方案1】:

    这取决于....

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

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

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

    在自动装箱期间避免 NPE。

    【讨论】:

      【解决方案2】:

      答案:

      • 编译器没有区别:一个好的优化器会生成相同的代码。但是对于人类(开发人员、测试人员、支持者等)来说,是有区别的:可读性
      • 3d 选项更加自然,这就是更易于阅读的原因。

      所以预期的代码(最小意外原则)是

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

      【讨论】:

        【解决方案3】:

        我更喜欢第三种选择。它很优雅。由于testCheck.getValue() 评估为布尔值,您可以在 if 条件中使用它

        在 java 中,使用== 运算符,我们正在检查两个引用是否引用了内存中的同一个对象。

        要检查两个对象是否有意义地相等,请使用.equals() 方法。

        【讨论】:

          【解决方案4】:
          Is there any difference ?
          

          只有可读性不同。

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

          如果你希望你的代码被快速阅读和理解,最后一个可能是要走的路。

          【讨论】:

            【解决方案5】:

            有什么不同吗?

            是的,有。

            如果是,哪一种是最好的实施方式?

            第三个。

            【讨论】:

            • 如果每个人都像你一样回答,我认为人们不会在 SO 上学到很多东西。如果没有为什么,从长远来看,是/否答案不是很有帮助。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-05
            • 1970-01-01
            • 1970-01-01
            • 2020-06-04
            • 1970-01-01
            相关资源
            最近更新 更多