'a == null'和'null == a'之间的区别

Ray*_*Jia 7 java

在检查变量是否为null时,我已经看到建议的编码样式是if(null == a).这有什么区别if(a == null)

ysh*_*vit 28

没有.

人们有时会null == a出于历史原因写作,因为它消除了C语中与拼写相关的错误的可能性.如果你要写:

if (a = NULL) { // note, only single =
  ...
Run Code Online (Sandbox Code Playgroud)

在C中,然后执行赋值语句a = NULL,语句的结果是赋值(即NULL).因此,不是检查a值,而是将其设置为NULL,然后进行基本检查if (NULL),这始终为false.这编译,但几乎肯定不是你想要的.而这一切都归功于=vs 的小错字==.

如果你把第NULL一个,那么if (NULL = a)是一个编译错误,因为你不能为NULL表示的常量赋值.

在Java中,没有必要这样做,因为if (null) {...不编译.(您可以在Java中使用布尔变量获得相同的错误:if (someBooleanVar = someMethod()).但这是一种相对罕见的模式.)

这种风格有时被称为" 尤达条件 ",因为它让人想起尤达在星球大战中的古怪演说风格.