null!= something和something之间的区别!= null

时间:2013-01-29 08:41:13

标签: java null-check

Java中null != somethingsomething != null之间是否存在差异?如果存在差异,那么我应该使用哪一个?为什么?

7 个答案:

答案 0 :(得分:5)

它可能来自所谓的joda-conditions,你写的是"bla" == myVariable而不是myVariable == "bla",因为它可能碰巧写出myVariable = "bla"在某些语言中返回“bla”但是还将“bla”分配给myVariable

答案 1 :(得分:4)

null != somethingsomething != null之间没有区别。您必须考虑person.getName().equals("john")"john".equals(person.getName())差异:如果NullPointerException返回getName(),第一个会抛出null,而第二个则不会。但这不适用于您的问题示例。

答案 2 :(得分:4)

我只想指出,“Yoda条件”这样做的理由(使用C& C ++等语言)不适用于此(Java)案例。

  1. Java不允许将通用表达式用作语句,因此

     something == null;
    

     null == something;
    

    将是编译错误。

  2. something == nullsomething = null的类型不同;分别是boolean和一些引用类型。在这种情况下,它意味着两者:

     if (something = null) {
         ...
     }
    

     if (null = something) {
         ...
     }
    

    将是编译错误。

  3. 事实上,我想不出一个现实的示例,其中null == something将是编译错误而something == null不会。因此,它在防错方面没有取得任何成果。

答案 3 :(得分:1)

没有区别,但是有些人使用它来提高代码的可读性。

答案 4 :(得分:1)

性能的观点不会有任何区别,运营商的双方都是以任何方式执行的。但是对于更易读的代码,第二个似乎更具可读性

  obj.getSomething().getAnotherThing().doSomething() != null

  null != obj.getSomething().getAnotherThing().doSomething()

但是,如果您只是比较一个变量或参数,那么它更具可读性

  something != null

当然这取决于读者的意识。

答案 5 :(得分:0)

在java中,如果我们比较任何一个,总是我们必须在左侧放置变量并将值放在右侧......

答案 6 :(得分:0)

它们都是一样的,没有区别。