好的,我们假设我有一个if语句和一个布尔值x:
if (x) {
// some stuff
}
这里发生了什么?这与if(x == true)
意味着什么相同?
答案 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)。
希望这也可以帮到你......
答案 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 == true
和x == 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 == true
与true == true
相同,则true
评估为x
,与x
的原始值相同false
x == true
条件false == true
与false
相同,则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 为真。