在Java中,哪个会更有效,并且有什么区别?
if (null == variable)
要么
if (variable == null)
(类似于此问题:null == object和object==null之间的区别)
我要说的是,这两个表达式在性能上绝对没有区别。
然而,有趣的是,两种情况下的编译字节码(由OpenJDK的javac发出)看起来有些不同。
对于boolean b = variable == null:
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:
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是最常见,默认和首选的样式。
variable == null
但是,在某些情况下,我倾向于放在null前面。例如在以下情况下:
null
String line; while (null != (line = reader.readLine())) process(line);