哪个具有更好的性能:test!= null或null!= test

San*_*air 12 java null

请考虑以下两行代码

if (test ! = null)
Run Code Online (Sandbox Code Playgroud)

if (null != test)
Run Code Online (Sandbox Code Playgroud)

表现明智,上述两个陈述是否有任何区别?我见过很多人使用后者,当被问及时他们说这是一个没有坚实理由的最佳实践.

Pau*_*Wee 22

没有不同.

第二个原因仅仅是因为C/C++程序员总是进行分配而不是比较.

例如

// no compiler complaint at all for C/C++
// while in Java, this is illegal.
if(a = 2) {
}
// this is illegal in C/C++
// and thus become best practice, from C/C++ which is not applicable to Java at all.
if(2 = a) {
}
Run Code Online (Sandbox Code Playgroud)

而java编译器会生成编译错误.

所以我个人更喜欢第一个,因为可读性,人们倾向于从左到右阅读,if test is not equal to null而不是阅读null is not equal to test.


ass*_*ias 22

它们完全一样.第二个在使用equals时有意义:

if("bla".equals(test))
Run Code Online (Sandbox Code Playgroud)

永远不会抛出一个NullPointerException:

if(test.equals("bla")) 
Run Code Online (Sandbox Code Playgroud)

能够.