在检查变量是否为 null 时,我发现建议的编码风格是 if(null == a)
。这和 if(a == null)
有什么区别?
最佳答案
没有。
出于历史原因,人们有时会写成 null == a
,因为它消除了 C 中与打字错误相关的错误的可能性。如果你要写:
if (a = NULL) { // note, only single =
...
在 C 中,这将执行赋值语句 a = NULL
,语句的结果是分配的值(即 NULL)。因此,不是检查 a
的值,而是将其设置为 NULL,然后检查 if (NULL)
,它始终为 false。这编译,但几乎肯定不是你想要的。而这一切都是由于 =
与 ==
的小拼写错误造成的。
如果你把NULL
放在前面,那么if (NULL = a)
是一个编译错误,因为你不能给NULL代表的常量赋值.
在 Java 中,不需要这样做,因为 if (null) {...
无法编译。 (您可以在 Java 中使用 boolean 变量仍然有相同的错误:if (someBooleanVar = someMethod())
。但这是一种相对罕见的模式。)
这种风格有时被称为“Yoda conditions”,因为它让人想起尤达在星球大战中古怪的说话风格。
关于java - 'a == null' 和 'null == a' 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594183/