java一个小问题

public class done {
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");
}
}
}

以上代码,输出结果是c,但是if(b)不是相等于if(b=true),应该先输出b不是么,为什么是进入到if(!b)里面呢?

原因解析: java中 = 表示赋值.  ==是比较. (所以=等号,和数学的等号意思不一致)

if(b=false) 并不是在判断b和false是否相等, 而是把b的值重新赋值为false

                boolean b = true;
if (b = false) { // b此时为false. 所以不能输出a
System.out.println("a");
} else if (b) {// b此时还是false ,不能输出b
System.out.println("b");
} else if (!b) {// b取反,那么是true,输出c
System.out.println("c");
} else {
System.out.println("d");
}

温馨提示:答案为网友推荐,仅供参考