为什么 b 在类 Test01 中的
if
语句之后为真-- 而 b 在类Test02中的else if
语句之后似乎不为真?
/* Evaluate the two classes below independently of one another*/
class Test01 {
public static void main(String[] args){
boolean b = true;
if (b)
System.out.println("B");
}
}
class Test02 {
public static void main(String[] args){
boolean b = true;
if (b = false)
System.out.println("A");
else if (b)
System.out.println("B");
}
}
混合运算符。
if (b = false)
是赋值运算符。
if (b == false)
是一个平等比较器。
你也可以写它:if (!b)
您可以参考运算符。
当你写 :
boolean b = true;
if (b = false)
System.out.println("A");
else if (b)
System.out.println("B");
JVM按以下顺序执行条件语句:
b = false
被计算,因此b
变量现在引用false
值if (b)
的计算结果为false
因此条件语句false
。else if (b)
也被计算为false
因此条件语句false
。
所以什么都不显示。
因为你正在做if (b = false)
.如果(b == false)
,你必须做什么.当你做=
它只是将false
分配给b
,在下一个条件下是无法进入if。
因为赋值的"结果"是分配的值。所以在第二种情况下它仍然是布尔表达式,现在在这种情况下b
false
.
if (b = false)
将被评估为
if(false) //you are assigning false to the b so the control will go to the else block
你不能在if语句中应用=你必须像这样使用==if(b==false(