好的,假设我有一个if语句和一个布尔值x:
if (x) {
// some stuff
}这里发生了什么?这是否意味着与if(x == true)相同?
发布于 2014-04-25 19:53:29
是,
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 我不认为这与程序的性能或正确性有任何关系。
发布于 2014-04-25 19:53:15
是的,是这样的。
if检查条件是否为真,如果为真,则执行body语句。所以x需要是一个boolean表达式。
事实上,如果x是一个布尔表达式,那么x就相当于x == true,所以您应该使用x,因为它更简洁。如果变量有一个布尔值的正确名称,这就变得更清楚了。
if (this.isVisible()) {
this.hide();
}与
if (this.isVisible() == true) {
this.hide();
}第一本最好读一读。
发布于 2014-04-25 19:53:16
是的,它的意思与您拥有if(x == true)的含义相同。
https://stackoverflow.com/questions/23301775
复制相似问题