【发布时间】:2013-01-12 18:36:33
【问题描述】:
null != something 和 something != null 在 Java 中是否有区别。如果有区别,那么我应该使用哪一个?为什么?
【问题讨论】:
-
这叫做尤达条件。我回答了why it's not-so-useful in Java,但在 C/C++ 等中有所使用。
标签: java null-check
null != something 和 something != null 在 Java 中是否有区别。如果有区别,那么我应该使用哪一个?为什么?
【问题讨论】:
标签: java null-check
null != something 和 something != null 之间没有区别。您一定在考虑person.getName().equals("john") 和"john".equals(person.getName()) 的区别:如果getName() 返回null,第一个会抛出NullPointerException,而第二个不会。但这不适用于您的问题示例。
【讨论】:
它可能来自所谓的 joda 条件,您在其中编写 "bla" == myVariable 而不是 myVariable == "bla",因为它可能碰巧意外编写 myVariable = "bla",它在某些语言中返回“bla”,但也将“bla”分配给我的变量
【讨论】:
我只想指出,这样做的“尤达条件”基本原理(在 C 和 C++ 等语言中)不适用于这种 (Java) 案例。
Java 不允许将通用表达式用作语句,所以两者都
something == null;
和
null == something;
会是编译错误。
something == null和something = null的类型不同; boolean 和一些引用类型。在这种情况下,这意味着两者:
if (something = null) {
...
}
和
if (null = something) {
...
}
会是编译错误。
事实上,我想不出null == something 会是编译错误而something == null 不会是现实 的例子。因此,它在防错方面没有取得任何成果。
【讨论】:
没有区别,但有些人使用它是为了便于代码的可读性。
【讨论】:
从性能上看不会有区别,两边的算子都是以任何方式执行的。但是对于更易读的代码,第二个似乎更易读
obj.getSomething().getAnotherThing().doSomething() != null
null != obj.getSomething().getAnotherThing().doSomething()
但如果你只是比较一个变量或参数,这更具可读性
something != null
当然,这取决于读者的感觉。
【讨论】:
在java中,如果我们比较任何一个,总是我们必须将变量放在左侧,值放在右侧......
【讨论】:
它们都是一样的,没有区别。
【讨论】: