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

标签 java

在检查变量是否为 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/

相关文章:

java - SELinux 和 Java

java - 通过多线程访问文件

java - 使用 Maven 时,Derby 给出 ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver

java - 无法应用插件 [id 'forge' ]

java - 为什么 "STRING".getBytes() 根据操作系统的不同而工作不同

java - 安卓 GCM InstanceId.getToken() -> java.io.IOException : TIMEOUT

java - 没有扩展到父类(super class)的 super 关键字

java - 如何删除system.out.println中的最后一个标记?

java - 为什么需要以毫秒为单位的超时以及为什么我必须为单独的 block 声明两个具有单独 run () 方法的类

java - 列表列表列表