0

我曾经写过类似“ anObject != null ”这样的Java代码测试语句,但我发现有些人这样做相反,例如“ null != anObject ”。那么,它们之间有什么区别,哪一个是 Java 中更好的方法?

4

4 回答 4

7

他们的理由是,如果您不小心忘记了!,那么您将进行分配而不是比较,而第二种方式不会发生这种情况。

anObject = null将 null 分配给anObject,而null = anObject将产生编译器错误。

于 2013-06-28T13:53:14.177 回答
3

这与尤达条件有些相关:

"the force".equals(myString);

如果 myString 为空,则避免空指针。

于 2013-06-28T13:54:16.307 回答
2

这是人们比较表达方式的一种风格。

不要使用null != anObjectasnull是一个常数,被认为是Yoda 条件

始终将变量放在左侧,将常量放在右侧。

于 2013-06-28T13:53:33.433 回答
1

从编译代码的角度来看,没有区别。

然而,从偏执的程序员的角度来看,它可以防止你犯下可怕的赋值错误。

例如,如果您输入错误:

null = myObject

你得到一个编译器错误,因为你不能分配给常量。

但是,如果您输入错误:

myObject = null

编译器不会抱怨。并且您可以发布将 null 分配给您的 Object 的代码,而不是测试 null。

于 2013-06-28T13:53:05.223 回答