if(x)是否相同(x == true)?

Fre*_*dom 3 java if-statement

好的,所以让我说我有一个if语句和一个布尔值x:

if (x) {
    // some stuff
}
Run Code Online (Sandbox Code Playgroud)

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

Ami*_*ani 16

是,

if(x) {

}
Run Code Online (Sandbox Code Playgroud)

是简洁的等价物

if(x == true) {

}
Run Code Online (Sandbox Code Playgroud)

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

class Test { 
   public void foo() { 
      boolean x = true;
      if(x == true) { 
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

发出:

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

VS

class Test { 
   public void foo() { 
      boolean x = true;
      if(x) { 
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

发出的:

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

我认为这与计划的表现或正确无关.