java - 是否在 if else block 中检查 == 等于或 != 不等于

标签 java performance optimization

我对两种不同风格的 equals 比较的性能(如果有影响的话)有疑问:

if(obj!=null)
{
    //perform some operation set 1
}
else
{
        //do operation set 2
}

对比

if(obj==null)
{
    //do operation set 2
}
else
{
        //perform some operation set 1
}

在第一种情况下,我在某处读到它的双重赋值,但现在不记得了。就绩效/分配而言,这两种情况是否相同?

编辑

参见 PMD 规则,例如 Link1Link 2 (如果谈到一种样式至少在可读性方面更好,请搜索标题 ConfusingTernary)

最佳答案

这取决于您的情况中哪种情况会更频繁地发生。始终将更频繁的场景保留为第一个 block 。

假设我必须测试 A > 10 是否,那么我将看到我的业务需求,如果 A 大于 10 的可能性大于我将其保留为第一个 block 。

大多数情况下,空值的频率非常低,因此应该将其作为第二个 block 。

  if(obj!=null){
   //perform some operation set 1
  }else{
   //do operation set 2
  }

因为你在一种情况下所做的是:-

  check cond 1 > if true > execute

  check cond 1 > if false > check 2 > if true > execute

因此,如果您知道条件 1 在大多数情况下为真,则选择此选项。

关于java - 是否在 if else block 中检查 == 等于或 != 不等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32110960/

相关文章:

java - 如何在所有线程执行完毕后退出 ExecutorService?

java - 错误请求中的重定向

R中data.table包中fread速度的原因

php - 如何正确测试查询性能

java - 删除不使用 JpaRepository

java - 如何在katalon studio中将WebElement转换为TestObject?

c# - 为什么在 C# 中使用结构 Vector3I 而不是三个整数要慢得多?

javascript - jQuery 中的事件委托(delegate)——哪种方法更好?

optimization - 没有在本地绑定(bind)时,核心中的函数如何运行得更快?

sql-server - 在 Web 服务器上运行 SQL Server