if(x) 与 if(x==true) 相同吗?

2024-01-02

好吧,假设我有一个 if 语句和一个布尔值 x:

if (x) {
    // some stuff
}

这里会发生什么?这是否意味着同样的事情if(x == true) ?


Yes,

if(x) {

}

是简洁等价于

if(x == true) {

}

正如@Sotirios 指出的,它们在字节码级别上是不同的。考虑以下 Java 类:

class Test { 
   public void foo() { 
      boolean x = true;
      if(x == true) { 
      }
   }
}

emits:

  public void foo();
    Code:
       0: iconst_1      
       1: istore_1      
       2: iload_1       
       3: iconst_1      
       4: if_icmpne     7
       7: return 

vs

class Test { 
   public void foo() { 
      boolean x = true;
      if(x) { 
      }
   }
}

其发出:

  public void foo();
    Code:
       0: iconst_1      
       1: istore_1      
       2: iload_1       
       3: ifeq          6
       6: return  

我认为这对程序的性能或正确性没有任何影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

if(x) 与 if(x==true) 相同吗? 的相关文章

随机推荐