为了账号安全,请及时绑定邮箱和手机立即绑定

object == null或null == object?

object == null或null == object?

慕慕森 2019-08-19 14:26:03
object == null或null == object?我听到某人null == object比object == null 检查更好例如:void m1(Object obj ) {    if(null == obj)  // Is this better than object == null ? Why ?        return ;    // Else blah blah}有什么理由还是这是另一个神话?感谢帮助。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

这可能是从C学习的习惯,以避免这种拼写错误(单一=而不是双重==):

if (object = null) {

将常量放在左侧的约定==在Java中并不真正有用,因为Java要求表达式if求值为一个boolean值,所以除非常量是a boolean,否则你会得到一个编译错误。参数。(如果它是一个布尔值,你不应该使用==...)


查看完整回答
反对 回复 2019-08-19
?
万千封印

TA贡献1891条经验 获得超3个赞

正如其他人所说,这是从C中学到的习惯,以避免拼写错误 - 尽管即使在C中我也希望有足够警告级别的优秀编译器发出警告。正如Chandru所说,以这种方式与Java中的null进行比较只会导致问题,如果您使用的是类型变量Boolean(您不在示例代码中)。我会说这是一种非常罕见的情况,而且不值得改变你在其他地方编写代码的方式。(即使在这种情况下,我也不会费心扭转操作数;如果我想清楚地考虑反转它们,我相信我可以算出等号。)

什么也没有被提及的是,很多人(当然我自己在内)发现的if (variable == constant)形式可读性更强-这是表达自己的更自然的方式。这是不要盲目地从C复制约定的原因。在假设在一个环境中可能有用的东西在另一个环境中有用之前,你应该总是质疑实践(就像你在这里做的那样:)。


查看完整回答
反对 回复 2019-08-19
?
慕神8447489

TA贡献1780条经验 获得超1个赞

除了对象的类型之外,这在Java(1.5+)中没有多大价值Boolean。在这种情况下,这仍然可以很方便。

if (object = null)如果是对象,则不会导致Java 1.5+中的编译失败,Boolean但会NullPointerException在运行时抛出。


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 849 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信