可能重复:
Null check in Java
我只是想知道
之间有什么区别if (null == something) {...}
和
if (something == null) {...}
假设在两种情况下something
都是同一个对象。据推测,除了代码的可读性之外,应该是非。
答案 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
是一个布尔变量。