Java if(object==null)与if(null==object)之间的差异?

Java if(object==null)与if(null==object)之间的差异?,java,Java,这两者的区别是什么?哪一个更好?我在一次采访中被问到这个问题 我能想到的唯一区别是,如果您想执行if(null==object)而忘记添加==和添加=,则不会对您的程序产生任何副作用。但是如果您在执行if(object=null)时犯了这个错误,那么您的程序就完蛋了。在Java编程语言中,if(object==null)和if(null==object)这两个表达式做的事情完全相同,因为=操作符是可交换的。前一种表示法在英语中使用时被认为更自然,而后一种表示法有一些支持者 如果程序员错误地为=键

这两者的区别是什么?哪一个更好?我在一次采访中被问到这个问题


我能想到的唯一区别是,如果您想执行
if(null==object)
而忘记添加
==
和添加
=
,则不会对您的程序产生任何副作用。但是如果您在执行
if(object=null)
时犯了这个错误,那么您的程序就完蛋了。

在Java编程语言中,if(object==null)和if(null==object)这两个表达式做的事情完全相同,因为
=
操作符是可交换的。前一种表示法在英语中使用时被认为更自然,而后一种表示法有一些支持者

如果程序员错误地为
=
键入
=
,比如
If(object=null)
,这在Java中是编译时错误,因为条件表达式必须是
布尔值,而不是
对象
。因此,
if(object==null)
if(null==object)
在Java中同样可以防止打字错误

<>但是在C和C++中,在条件表达式中,整数、浮点和指针类型隐式强制为<代码>布尔O/COD>。编写
if(object=null)
会编译,但会做错误的事情,而编写
if(null=object)
会触发编译时错误

另请参见:

由于其自身的原因,
object==null
null==object
(the)之间的唯一区别在于其认知性质:读者如何阅读和消化代码。虽然我不知道确切的答案,但我知道我个人更喜欢将我正在检查的对象与其他对象进行比较,而不是将其他对象与我正在检查的对象进行比较,如果这有意义的话。从主题开始,然后是要比较的值

在其他一些语言中,这种比较风格更有用

不过,为了防止一般情况下缺少“=”符号,我认为编写
null==object
是一种误导行为。绕过此特定代码的更好方法是通过junit测试来保证行为。请记住,丢失“=”的可能错误并不取决于方法的输入参数-您不依赖于其他人对该API的正确使用-因此junit测试是防止这种情况发生的最佳选择。无论如何,您将希望编写junit测试来验证行为;缺少的“=”自然在范围内

或者,这可能是一个让你开始讨论避免原始空检查的技巧性问题吗?

另外,如果程序员错误地键入了=for==,比如if(object=null),编译错误不会出现,错误会在代码中蔓延的情况仍然很少

例如:
if(boolean1=boolean2)
,首先是赋值表达式,然后针对if条件进行计算。另一个有问题的代码是
if(wrapperBool=null)
,其中wrapperBool是一个布尔包装类变量。它将在运行时抛出NullPointerException(NPE)


但是作为一个例子,输入错误应该在单元测试用例之前就被发现。

一些程序员更喜欢“yoda”检查
null==value
,而其他人更喜欢“自然语言”形式
value==null
——至少在Java中,这是个人的偏好。我想说你的结论也不坏哦,他们真的发现其中一个更好。你应该问他们哪一个更好:
if(a==b)
if(b==a)
。除非你分配给一个布尔值
if(o=null)
是编译时错误,如果它是布尔值,它就是NPE,因此,我认为正确的答案是,
null=o
是过时的Cism。post you链接给出了错误的解释:==不是关联的,而是根据您自己的状态进行交换的。