在java中比较if(null == object)或if(object == null)是否正确?

Sar*_*hAk 2 java

我正在一个项目中工作,如下所示

if(null == object)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)

是这样的

if(object == null){
// do something 
}
Run Code Online (Sandbox Code Playgroud)

举一些例子,以便两者相同或不同.

Sur*_*tta 10

这种具体情况没有区别.风格很重要.第一种风格是 Yoda风格的编码,通常写入以避免空指针.但是这种情况,它是一样的.

维基的例子

String myString = null;
if (myString.equals("foobar")) { /* ... */ }
// This causes a NullPointerException in Java
Run Code Online (Sandbox Code Playgroud)

有了尤达的条件:

String myString = null;
if ("foobar".equals(myString)) { /* ... */ }
// This is false, as expected
Run Code Online (Sandbox Code Playgroud)

请注意,避免NullPointerException并不总是有利的.覆盖它们可能会导致其他错误或花费更多时间来调试代码.


And*_*lko 5

运算符==是对称的.

x == null是平等的null == x.但是使用第一种方式更具可读性和习惯性.

还有其他方法可以检查对象中的空值:

1. boolean Objects.nonNull(Object obj) // obj != null
2. T Objects.requireNonNull(T obj) // checks out obj and returns it if it isn't null
Run Code Online (Sandbox Code Playgroud)

例:

String v = "value";

System.out.println(v == null ? null : v);
System.out.println(null == v ? null : v);
Run Code Online (Sandbox Code Playgroud)

输出:

value
value
Run Code Online (Sandbox Code Playgroud)