首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >if(x)是否与if(x==true)相同?

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

Stack Overflow用户
提问于 2014-04-25 19:50:21
回答 10查看 10.9K关注 0票数 3

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

代码语言:javascript
运行
复制
if (x) {
    // some stuff
}

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

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-04-25 19:53:29

是,

代码语言:javascript
运行
复制
if(x) {

}

是简洁的等价物

代码语言:javascript
运行
复制
if(x == true) {

}

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

代码语言:javascript
运行
复制
class Test { 
   public void foo() { 
      boolean x = true;
      if(x == true) { 
      }
   }
}

排放:

代码语言:javascript
运行
复制
  public void foo();
    Code:
       0: iconst_1      
       1: istore_1      
       2: iload_1       
       3: iconst_1      
       4: if_icmpne     7
       7: return 

vs

代码语言:javascript
运行
复制
class Test { 
   public void foo() { 
      boolean x = true;
      if(x) { 
      }
   }
}

它释放出:

代码语言:javascript
运行
复制
  public void foo();
    Code:
       0: iconst_1      
       1: istore_1      
       2: iload_1       
       3: ifeq          6
       6: return  

我不认为这与程序的性能或正确性有任何关系。

票数 17
EN

Stack Overflow用户

发布于 2014-04-25 19:53:15

是的,是这样的。

if检查条件是否为真,如果为真,则执行body语句。所以x需要是一个boolean表达式。

事实上,如果x是一个布尔表达式,那么x就相当于x == true,所以您应该使用x,因为它更简洁。如果变量有一个布尔值的正确名称,这就变得更清楚了。

代码语言:javascript
运行
复制
if (this.isVisible()) {
    this.hide();
}

代码语言:javascript
运行
复制
if (this.isVisible() == true) {
    this.hide();
}

第一本最好读一读。

票数 4
EN

Stack Overflow用户

发布于 2014-04-25 19:53:16

是的,它的意思与您拥有if(x == true)的含义相同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23301775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档