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

时间:2014-04-25 19:50:21

标签: java if-statement

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

if (x) {
    // some stuff
}

这里发生了什么?这与if(x == true)意味着什么相同?

10 个答案:

答案 0 :(得分:16)

是,

if(x) {

}

的简洁等价物
if(x == true) {

}

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

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

发射:

  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  

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

答案 1 :(得分:4)

是的,是的。

if检查条件是否为真,如果是,则执行body语句。因此x必须是boolean表达式。

事实上,如果x是布尔表达式,x == true等同于x,因此您应该使用x,因为它更简洁。如果变量具有布尔值的正确名称,例如

,则这变得更加清楚
if (this.isVisible()) {
    this.hide();
}

VS

if (this.isVisible() == true) {
    this.hide();
}

第一个更好阅读。

答案 2 :(得分:3)

是的,这意味着你有if(x == true)。

答案 3 :(得分:3)

如果可以将x解析为布尔值,并且值为“true”,则将执行“其他内容”。

答案 4 :(得分:3)

是的,它与if(x == true)相同。事实上,建议使用if(x)

请参阅The Java tutorial中的The if-then and if-then-else Statements中的示例。

答案 5 :(得分:2)

两者的返回都是布尔值,在这种情况下都返回true

例如:

x = true。

评价:

a)if(x)

b)if(x == true)

两者都返回true,第一个因为是直接值而第二个是因为表达式是真的(true == true)。

希望这也可以帮到你......

http://www.homeandlearn.co.uk/java/boolean_values.html

答案 6 :(得分:2)

Jep这是对的。

还有一个简短的表格,对你来说很有趣:

这意味着如果x为真则返回true,否则返回false。

(x) ? return true : return false;

答案 7 :(得分:2)

简答:是的。

if语句将布尔表达式作为其条件。这可能是运算符返回布尔值(如==)或者可以是布尔变量的结果。基本上,布尔表达式是可以分配给布尔变量的任何东西:

boolean b = ?;

因此,x == true有点多余,因为x本身已足够:这两个布尔表达式等效。对于新程序员来说,编写== true是很常见的,因为它“更自然地”读取:如果x为真,则执行...

但是,如果(x == true)为真,你实际应该将其视为,然后执行... ,因为实际正在发生的事情。在这里,您可以看到冗余的来源。更有经验的程序员知道这一点,并且更喜欢分别编写x!x而不是x == truex == false。它与编译器无关,但对于程序员/维护者来说,当他必须阅读时,这很重要:

if ( ((x == true) && (y == true)) || (z == false) ) { ... }

而不是:

if ( (x && y) || !z ) { ... }

答案 8 :(得分:2)

  

这是否与if(x == true)意味着相同?

if(x == true)会得到与if (x)相同的结果。它基于简单的逻辑:

  • 如果x true条件x == truetrue == true相同,则true评估为x,与x的原始值相同
  • 如果false x == true条件false == truefalse相同,则x评估为x,这与if (x==true)的原始值相同}

因此,无论if (x)表达式{{1}}的值是否等同于{{1}}。

答案 9 :(得分:0)

是,两者都是相同正确。并给您相同的结果。

if(x) is more appropriate

原因,在编程语言中,任何数字,但 0 除外,被视为 True

假设我输入的数字是 5

if(x) or if(5)

因为 5 不等于 0 ,或者您可以说 5!= 0 为真。