null != object 和 object != null 的区别是什么?

12

3
尤达会使用每个字符串的第一个版本,除此之外没有区别。然而,如果第一个字符串为空,那么在错误日志中会出现一些问题。 - Nick Craver
为什么在C#中常常看到Null变量而不是变量Null? - Martijn Courteaux
重复:http://stackoverflow.com/questions/1957836/which-way-is-better-null-object-or-object-null-closed - Martijn Courteaux
奇怪的语法“Yoda Conditions” - stacker
2个回答

29
第一种和第二种写法是等价的,但是"null != object"是从其他语言中流传下来的一种老式写法。在这些语言中,写成"if (object = null)"会不小心把null赋值给object。使用"null != object"可以避免出现这种错误。
第二种写法虽然与第一种等价,但它有额外的优点,即如果"something"为null,你将不会得到一个空引用异常,但如果使用"something".equals("")则会得到该异常。

给我加速几秒钟。 ;) - Artem Barger
1
"null != object"也有助于读者解析条件,因为往往“object”部分是一个更复杂的表达式。 - rsp

6

在语义和性能上完全没有区别。

在这种情况下,== 是一个引用不等操作;它永远不会抛出 NullPointerException

JLS 15.21.3 引用相等运算符 == 和 !=

如果相等运算符的操作数都是引用类型或 null 类型,则该操作是对象相等性。

如果操作数值都为 null 或都引用同一对象或数组,则 != 的结果为 false;否则,结果为 true

使用最易读的方式。通常是 something != null

相关问题


如果是null,那么对象比对象快。 - user432843

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接