如何在 java if else 语句中计算布尔值?


为什么 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。

因为赋值的"结果"是分配的值。所以在第二种情况下它仍然是布尔表达式,现在在这种情况下bfalse.

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(

最新更新