哪个更有效:如果(null == 变量)还是 if (变量 == null)?

2022-09-01 00:15:48

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

if (null == variable)

if (variable == null)

答案 1

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

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

然而,有趣的是,编译后的字节码(由OpenJDKs 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);

答案 2

这被称为“尤达条件”,目的是防止您意外使用赋值()而不是相等性检查()。===