【问题标题】:What is the difference between "anObject != null" and "null != anObject" in java? [duplicate]java中的“an Object!= null”和“null!= an Object”有什么区别? [复制]
【发布时间】:2013-06-28 22:01:27
【问题描述】:

我曾经写过类似“anObject != null”这样的Java代码测试语句,但是我发现有些人这样做相反,例如“null != anObject” .那么,它们之间有什么区别,哪一个是 Java 中更好的方法呢?

【问题讨论】:

  • 没有区别。
  • 没有不同,没有更好。使用 == 反向操作可以避免意外分配。
  • 随机琐事:这些是“尤达条件”:P

标签: java


【解决方案1】:

他们的推理是,如果你不小心忘记了!,那么你就有了一个赋值而不是一个比较,这不可能发生第二种方式。

anObject = null 将 null 分配给 anObject,而 null = anObject 将产生编译器错误。

【讨论】:

    【解决方案2】:

    这有点与尤达条件有关:

    "the force".equals(myString);
    

    如果 myString 为空,则避免空指针。

    【讨论】:

      【解决方案3】:

      这是人们比较表达方式的一种风格。

      不要使用null != anObject,因为null 是一个常数,被认为是Yoda condition

      始终将变量放在左侧,将常量放在右侧。

      【讨论】:

      • 这还不错,没有理由避免它......事实上这样做有好处。
      • @Doorknob - 也许不错,但我不会真的说这是惯例。我个人觉得更难阅读和评估,但这是偏好。
      • 这取决于个人喜好。如果您以这种方式编码,最终没有人会受到伤害。并且您可以保护自己免于做一些对您的编译代码造成严重后果的意外事件。另一方面,它不像正确的方式那样自然地阅读。
      【解决方案4】:

      从编译代码的角度来看没有区别。

      但是从偏执的程序员的角度来看,它可以防止你犯下可怕的赋值错误。

      例如如果您输入错误:

      null = myObject
      

      你得到一个编译器错误,因为你不能分配给常量。

      但是如果你打错了:

      myObject = null
      

      编译器不会抱怨。并且您可以发布将 null 分配给您的 Object 的代码,而不是测试 null。

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 2013-01-09
        • 2019-12-06
        相关资源
        最近更新 更多