2013-06-28 176 views
0

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

+4

没有区别。 – gustavohenke

+1

没有什么不同,没有更好的。使用==进行反向操作可避免意外分配。 –

+4

随机琐事:这些是“尤达条件”:P – Doorknob

回答

1

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

然而,从偏执狂程序员的角度来看,它可以防止你做出可怕的任务错误。

例如如果您输入错误:

null = myObject 

由于无法指定常量,因此会出现编译器错误。

但是,如果输错:

myObject = null 

编译器不会抱怨。你可以发布代码,将null赋值给你的对象,而不是测试null。

7

他们的推理是,如果你不小心忘记了!,那么你有一个任务而不是比较,这是不可能发生的第二种方式。

anObject = null将null指定为anObject,而null = anObject将产生编译器错误。

2

这是人们如何比较表情的风格。

不要使用null != anObject因为null是一个常数,并且被认为是Yoda condition

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

+2

这并不坏,没有理由避免它......实际上这样做有好处。 – Doorknob

+2

@门把手 - 也许不坏,但我不会说这是惯例。我个人觉得很难阅读和评估,但这是偏好。 –

+1

归结为个人喜好。如果你用这种方式编码,最终没有人会受到伤害。而且你可以保护你自己免于做一些偶然的事情,这会在你的编译代码中造成严重后果。另一方面,它不会像正确的方式那样自然地阅读。 –

3

这在一定程度上关系到尤达条件:

"the force".equals(myString); 

避免了空指针的myString为空。

相关问题