当前位置: 首页 > 面试题库 >

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

周睿范
2023-03-14
问题内容

在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);


 类似资料:
  • 问题内容: 以下三个功能中哪个更有效? 请以可接受的具体逻辑答复。 问题答案: 前者是更有效时,是。两者何时不相同。与的比较只是两个32位整数的比较,这是非常快速的运算。抛出异常的代价很高,因为应该创建新对象并且应该填充堆栈跟踪。 三进制运算符与语句完全一样有效,因为两者都被转换为相同的字节码。

  • null 它是功能性的,但丑陋,不是“最佳实践”。怎么简化呢?

  • 问题内容: 谈论Java性能..哪个更好?if..else或多个if 要么 对您的想法感兴趣 谢谢! 问题答案: 在性能方面没有区别。选择最易读的选项,具体取决于代码的功能。 通常,不必担心这些微优化。只有在确定存在需要解决的性能问题后,才能进行优化。 “我们应该忘记效率低下的问题,大约有97%的时间是这样:过早的优化是万恶之源。” -唐纳德​​·努斯

  • 问题内容: 在PHP脚本中-这样的if语句将检查什么? 我已经多次看到它在脚本中使用过,现在我真的很想知道它的“作用”。它什么都不丢失;它只是if语句中的一个普通变量…我在任何地方都找不到关于此的任何结果,因此显然我在发布此内容时看起来会很愚蠢。 问题答案: 该构造进行测试以查看是否评估为任何“真实”值。它可以是boolean ,也可以是非空,非NULL值或非零数字。看看PHP文档中的布尔值评估列

  • 问题内容: 考虑以下两行代码 和 在性能上,以上两个语句有什么区别吗?我见过很多人使用后者,当被问及他们说这是最佳实践时,没有充分的理由。 问题答案: 没有不同。 第二个原因仅仅是因为C / C ++程序员总是执行分配而不是比较。 例如 而java编译器会生成编译错误。 因此,由于可读性强,我个人更喜欢第一个,人们倾向于从左到右阅读,而不是。

  • 好吧,我正在使用字典,例如: 然后我想做的基本上是说,如果“用户”(一个参数)的名称前面有“@”,那么将变量前缀分配为“@”,如果他们的名称前面有“~”,则将变量前缀分配为“~”,如果他们有“ 然后我想说,如果用户的名字前面有“%”,则将前缀变量设置为“%”,否则将其设置为“”(因为这些值只有两个键)。为此,我需要一个if语句,并将其与self进行比较。声音的价值。 分配前缀变量的当前代码 目前,