/*
测试if()中=与==语句的作用域
首先=和==跟作用域没有关系,你这两段代码分别输出的是b和c,这使你误认为是=和==的作用域差异导致,
第一段代码b==false是比较,b初始化为true,所以判断结果为false,只能执行else if(b)的代码,结果为true所以输出b;
第二段代码,将false赋值给b,此时b就是false,当然就不能执行第一条语句,往下执行到else if(b),此时b还是false,第二条语句也不执行,
接着执行到else if(!b),此时运算完后b就变成true,当然就执行输出c了。
*/
public class TestBoolean{
public static void main(String[] args){
boolean b = true;
if(b==false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
if(b=false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
}
}
测试if()中=与==语句的作用域
首先=和==跟作用域没有关系,你这两段代码分别输出的是b和c,这使你误认为是=和==的作用域差异导致,
第一段代码b==false是比较,b初始化为true,所以判断结果为false,只能执行else if(b)的代码,结果为true所以输出b;
第二段代码,将false赋值给b,此时b就是false,当然就不能执行第一条语句,往下执行到else if(b),此时b还是false,第二条语句也不执行,
接着执行到else if(!b),此时运算完后b就变成true,当然就执行输出c了。
*/
public class TestBoolean{
public static void main(String[] args){
boolean b = true;
if(b==false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
if(b=false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
}
}