一尘不染

哪个更有效:if(null ==变量)或if(variable == null)?

java

在Java中,哪个会更有效,并且有什么区别?

if (null == variable)

要么

if (variable == null)

阅读 401

收藏
2020-09-08

共1个答案

一尘不染

(类似于此问题:null == object和object==null之间的区别

我要说的是,这两个表达式在性能上绝对没有区别。

然而,有趣的是,两种情况下的编译字节码(由OpenJDK的javac发出)看起来有些不同。

对于boolean b = variable == null

 3: aload_1               // load variable
 4: ifnonnull 11          // check if it's null
 7: iconst_1              // push 1
 8: goto 12           
11: iconst_0              // push 0
12: istore_2              // store

对于boolean b = null == variable

 3: aconst_null           // push null
 4: aload_1               // load variable
 5: if_acmpne 12          // check if equal
 8: iconst_1              // push 1
 9: goto 13
12: iconst_0              // push 0
13: istore_2              // store

正如@Bozho所说,variable == null是最常见,默认和首选的样式。

但是,在某些情况下,我倾向于放在null前面。例如在以下情况下:

String line;
while (null != (line = reader.readLine()))
    process(line);
2020-09-08