(null != x) 和 (x != null) 有什么区别吗?

5
我正在观看一份Java编程视频教程,其中提到了以下内容:
if(null != x){
}

使用以上方式是一个好的实践吗?

它和以下方式有什么不同:

if(x != null){
}

3
没什么区别,我发现if (x != null)更常用。 - ryanpattison
4
有些人喜欢将null放在前面,以防输错成null = x。但是这种比较的结果是相同的。 - AntonH
2
== 的情况下,if (null == x) 可以防止你因为打错字而意外地将 null 赋值给 x。但是在 != 的情况下,这个错误是不可能发生的,所以你可以自由选择任何一种方式(但如果你开始使用 null == x,你可能也应该使用 null != x)。 - Pshemo
2
@MadProgrammer 是的,但大多数情况下它无法编译,因为赋值表达式评估为非布尔类型。在C中,这种打字错误总是会产生有效的代码。 - ryanpattison
1
@AntonH 这种情况可能会发生,但不太可能。if (x = null) 只有在 x 是一个大写的 Boolean 时才是合法的。否则,表达式类型将不会是布尔值,或者null不能被赋值给 x - ajb
显示剩余16条评论
2个回答

5

你应该使用第二个。

两个表达的意思都是一样的...比较A和B,或者比较B和A——这两个意思是一样的。

使用 x != null 更有意义,因为这更像我们说话的方式。

你可以问我“x不是null吗?”这似乎比“null不是x吗?”更自然。它对我们来说更有意义。


你可以问我“x不是null吗?”这比“null不是x吗?”更自然。这就是为什么value == variable被称为Yoda条件的原因 :) - Pshemo
哈哈,非常酷的链接。非常有趣。 - Alex K
2
“Yoda condition”的问题在于我们可以在Java程序中使用do但不能使用try - ajb
抱歉,也许你还没有看过这部电影... - ajb
不要。试图不要。行动...或者不行动。没有尝试这一说。 - Alex K

2
我认为最常用的方法是后者,但两种方法都能实现相同的目的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接