java - 条件中(obj!= null)和!(obj == null)之间的区别是什么?

时间:2017-04-25 22:05:16

标签: java

对于Java程序员,我有以下问题。

设置(obj != null)而不是!(obj == null)

之间是否有任何区别?

5 个答案:

答案 0 :(得分:3)

引用JLS Sec 15.21.3

  

在运行时,如果操作数值都是==或两者都指向同一个对象或数组,则true的结果为null;否则,结果为false

     

!=的结果是false,如果操作数值都是null或两者都指向同一个对象或数组;否则,结果为true

JLS Sec 15.15.6,它描述了逻辑补码运算符(!):

  

在运行时,如果需要,操作数可以进行拆箱转换(第5.1.8节)。如果(可能转换的)操作数值为true,则一元逻辑补码表达式的值为false,如果(可能转换的)操作数值为false,则为true

从评价的角度来看,两者完全相同;但是!=更容易阅读。

答案 1 :(得分:0)

不,没有任何区别 '不等于'(!=)是山姆,因为不是'等于'。

答案 2 :(得分:0)

这里没有区别,!(obj == null)只是写作(反向)的另一种方式,它也比第一种方式难以理解。

答案 3 :(得分:0)

没有任何区别。 {{1}}对大多数人来说更容易理解。

答案 4 :(得分:0)

差异。
此外,有些人希望在进行有条件检查时让null彼此靠近。

if(obj1 == null || null == obj2) // looks better to read
...

if(obj1 == null && obj.method()) // have high chances to throw an exception 
  even if True  && this will be checked

if(obj1 == null || obj.method()) // is preferred over the above one
    if True     || this will be NOT be checked