Java 空值之间的差异!=有事有事!=无效的

Java 空值之间的差异!=有事有事!=无效的,java,null-check,Java,Null Check,null!=一些东西和一些东西!=Java中的null。如果有差异,那么我应该使用哪一个,以及为什么??没有区别,但有些人使用它是为了便于代码的可读性。null!=一些东西和一些东西!=空。您必须考虑person.getName().equals(“john”)和john.equals(person.getName())的区别:如果getName()返回null,第一个将抛出NullPointerException,而第二个不会。但这不适用于您的问题示例。这可能来自于所谓的joda条件,即您编写

null!=一些东西
一些东西!=Java中的null
。如果有差异,那么我应该使用哪一个,以及为什么??

没有区别,但有些人使用它是为了便于代码的可读性。

null!=一些东西和
一些东西!=空
。您必须考虑
person.getName().equals(“john”)
john.equals(person.getName())
的区别:如果
getName()
返回
null
,第一个将抛出
NullPointerException
,而第二个不会。但这不适用于您的问题示例。

这可能来自于所谓的joda条件,即您编写
“bla”==myVariable
而不是
myVariable==“bla”
,因为它可能会意外写入返回“bla”的
myVariable=“bla”
在某些语言中,但在java中也将“bla”赋值给myVariable如果我们比较任何变量,总是必须将变量放在左侧,值放在右侧…

从性能角度看,不会有任何差异,运算符的两侧都以任何方式执行。但对于可读性更高的代码,第二个看起来更可读

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

  null != obj.getSomething().getAnotherThing().doSomething()
  something != null
但是如果你只是比较一个变量或参数,这会更容易理解

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

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

当然,这取决于读者的感觉。

它们都是相同的,没有区别。

我只想指出,这样做的“Yoda条件”原理(在C&C++等语言中)不适用于这种(Java)情况

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

     something == null;
    

    可能是编译错误

  • something==null
    something=null
    的类型不同;布尔型和某些引用类型。在这种情况下,这意味着:

     if (something = null) {
         ...
     }
    

    可能是编译错误


  • 事实上,我想不出一个实际的例子,其中
    null==something
    将是编译错误,而
    something==null
    不会。因此,它在防错方面没有任何作用。

    我认为这是惯例。谢谢!我的一位同事向我解释过,我记不起她说了什么!这叫尤达状态。我回答了,但在C/C++等语言中使用了一些。C#也是如此。在布尔条件中错误地使用“=”而不是“=”,会导致编译错误。尤达条件在这里什么都不起作用。