在Java中,哪一种更有效率,它们之间有什么区别?
if (null == variable)
或者。if (variable == null)
在Java中,哪一种更有效率,它们之间有什么区别?
if (null == variable)
或者。if (variable == null)
(类似于这个问题: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);
这被称为“尤达条件”,其目的是防止您意外地使用赋值(=
)而非相等检查(==
)。
没有区别。
if (variable == null)
是(在我看来)更好的编程风格。
请注意,在Java中,null
应该小写。
if (null == variable)
就是 Yoda 风格 :) 在这里解释:http://stackoverflow.com/questions/2349378?tab=votes&page=1#tab-top - b.roth没有区别
(null == variables)
在早期(C语言)有时用来避免写错:(variable = NULL)
简短回答:没有区别。
更详细的回答是:这是一种比较主观的风格上的差异。有些人认为常量应该在左侧,作为一种防御性的风格,以防您将 ==
错误键入为 =
。有些人则认为常量应该在右侧,因为它更加自然和易读。
如果语言设计得好,并配合良好的编译器和静态分析工具,可以将偏执症最小化,因此您应该编写最可读和自然的代码,这意味着常量应位于右侧。
下次请使用搜索功能。
if(variable = NULL)
是完全合法的。从性能角度来看,没有任何实质性的差异。
然而... 如果你打错了一个等于号怎么办?
foo = null; // assigns foo to null at runtime... BAD!
对比
null = foo; // compile time error, typo immediately caught in editor,
developer gets 8 hours of sleep
String line;
while (null != (line = reader.readLine()))
process(line);
我的观点是:不要在意这些微不足道的性能优化。如果你的性能不好,找到并解决代码中真正的问题和瓶颈。
没有任何区别。
null
,而不是NULL
。 - ryanprayogo