(obj == null)vs(null == obj)?

Luk*_* Vo 39 java oop comparison

我的老板说我应该使用null == obj,因为它比它好obj == null,但他不记得为什么这样做.有没有理由使用null == obj
我觉得不知怎的......对面!

在Google上进行一些搜索后,我发现的唯一一件事就是:

在C中,它可以防止您在条件结构中意外地键入(obj = null).

Fem*_*ref 36

你可以不会意外地分配nullobj通过键入obj = null来代替.然而,这是C次的回忆,在java中,这是不可能的,因为=表达式返回赋值的右侧.由于null不是boolean,编译器会抱怨.

我会尝试向老板解释一次,展示它.如果他仍然不同意你,那就去做吧.与老板争吵是件小事.

  • 一般来说,该语句是正确的,但有一个例外:如果`obj`是`Boolean`,那么`if(obj = null)`将不会触发编译器错误 (11认同)
  • @ratchet怪胎:尝试将旗帜定义为"布尔":) (3认同)

小智 18

如果您使用编译文件if(null==obj),则生成的字节代码是if_acmpne,如果是的if(obj==null)ifnonnull.现在在if_acmpne两个操作数中弹出堆栈并检查它们是不相等的(在这种情况下nullobj),并且ifnonnull只有一个操作数被弹出并检查它是否为空.从这看起来似乎ifnonnull更好,因为它只涉及弹出一个操作数.

参考文献:http://www.artima.com/underthehood/flowP.html


Oll*_*lin 13

在Java中,没有区别.

我更喜欢(obj == null),因为它感觉更自然.

  • @XcodeDev:这是一个完美的答案.特别是考虑到整个问题是"(obj == null)vs(null == obj)?",它的范围非常模糊. (4认同)