哪个更有效:如果(null == 变量)还是 if (变量 == null)?
2022-09-01 00:15:48
在Java中,哪个会更有效,有什么区别?
if (null == variable)
或
if (variable == null)
在Java中,哪个会更有效,有什么区别?
if (null == variable)
或
if (variable == null)
(类似于这个问题: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);