java null检查语法差异

Moz*_*ath 1 java syntax optimization performance null

在迄今为止发布的任何Java版本中是否存在性能差异?

foo != null

null != foo

我个人认为对象的上述两种形式的空检查的行为没有任何变化,但不确定哪一种表现更好.我知道差异会非常小,如果有的话,但是想知道为什么有人以这种方式编写了所有代码.

Jun*_*san 6

应该没有性能差异,但形式可读性透视foo!= null更好.因为通常在左侧我们将想要比较的内容与右侧的值进行比较.通常我们会将我们的对象比如foo与null进行比较.


tim*_*ras 5

这来自旧C时代.它以foo == null(null == foo)开头.

在c语法有效(编译器没有抱怨):

if (foo = null) {
}
Run Code Online (Sandbox Code Playgroud)

为了防止这种微妙的错误,语法开始使用:

if (null == foo) {
}
Run Code Online (Sandbox Code Playgroud)

因为null是常量,所以if(null = foo){}

变成语法错误.

在java中,只有一个案例重要:

boolean someBoolean;
if (someBoolean = true) {
}
Run Code Online (Sandbox Code Playgroud)

是运行时错误,但编译

这个

boolean someBoolean;
if (true = someBoolean) {
}
Run Code Online (Sandbox Code Playgroud)

是编译错误.

没有性能问题,在某些情况下只有错误预防.