比较差异是什么?

时间:2010-10-27 07:12:11

标签: java comparison

  

可能重复:
  Null check in Java

我只是想知道

之间有什么区别
if (null == something) {...}

if (something == null) {...}

假设在两种情况下something都是同一个对象。据推测,除了代码的可读性之外,应该是非。

4 个答案:

答案 0 :(得分:7)

这些陈述完全等同。

只有在使用equals时才会出现差异,然后从不明确地使用null。

if( "A".equals(someString) ) { ... }

是null安全的,因为如果someString为null,它不会失败。

if( someString.equals("A") ) { ... }
当someString为null时,

显然会失败。

答案 1 :(得分:6)

没有区别。

将常数放在第一位的想法有助于防止在这种情况下意外分配。例如,在某些语言中,可以说:

if (i = 42) {
    ...
}

我被分配,条件为真。如果您不打算这样做,则没有编译器错误,并且很难找到。

如果你总是把常数放在第一位:

if (42 == i) {
    ...
}

然后你意外做的那天:

if (42 = i) {
    ...
}

编译器错误会立即提醒您正在尝试分配常量。

答案 2 :(得分:3)

查看此StackOverflow问题:object==null or null==object?。它涵盖了你的问题的答案。

答案 3 :(得分:0)

没有区别。

这只是为了防止使用=代替==的常见错误。

if (true = something) {...}

给出错误但

if (something = true) {...}

没有,假设something是一个布尔变量。