日期:2014-05-20  浏览次数:20791 次

关于if的,相信很多人和我一样有点不懂
比如:
 
Java code

private boolean init=false;//假定一个初始量为false

if(!init){
    code···
    init=true;
}




想问一下,上面这个if语句里如果改成
  
  init==false或init=true效果不变(和!init一样);

如果改成 init==true 或init=false 或只留下init ,则if里的语句跳过不执行


求高手解答!!!

------解决方案--------------------
init 是 boolean 类型,可以只保留 init 即可 ,不必再和 true/false 判等。
------解决方案--------------------
这里面if(!init) 就是如果 init是true 通过非运算符! 判断条件就变成false ,所以 !init与 init!=true和init==false效果完全一样

但是你上面说的init=true init=false则不一样,一个等号只是赋值运算不是条件判断的运算,你认真看看 非运算符 那一块的知识吧
------解决方案--------------------
init本身就是boolean类型的,只有true和false两个值可以取,不需要用==和true或fals比较了。
------解决方案--------------------
如果改成 init==true 或init=false 或只留下init ,则if里的语句跳过不执行
init==false,此表达式成立,所以该表达式的值为true,if中的code能执行,init=true为赋值表达式,表达式的值为最后的运算结果,即为true,所以code能执行,!init为true这应该没问题,下面的同上
------解决方案--------------------
只要对if里面的整个表达式判断,如果是true就执行里面的语句,false就不执行,这样思考比较好
------解决方案--------------------
先看括号里面的式子,判断是为false/true,在来判断逻辑,这样思维比较清楚!
------解决方案--------------------
init==true 或init=false 或只留下init 是false当然不会执行了。