哪个具有更好的性能:测试 != 空或空 != 测试

2022-09-04 05:13:44

请考虑以下两行代码

if (test ! = null)

if (null != test)

在性能方面,上述两种说法有什么区别吗?我见过很多人使用后者,当被问到时,他们说这是一个没有充分理由的最佳实践。


答案 1

没有区别。

第二个仅仅是因为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) {
}

而java编译器将生成编译错误。

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


答案 2

它们是完全相同的。第二个在使用等于时是有意义的:

if("bla".equals(test))

永远不能抛出一个辟:NullPointerException

if(test.equals("bla")) 

能。