比如:
 
private boolean init=false;//假定一个初始量为falseif(!init){
    code···
    init=true;
}想问一下,上面这个if语句里如果改成
  
  init==false或init=true效果不变(和!init一样);如果改成  init==true 或init=false 或只留下init ,则if里的语句跳过不执行
求高手解答!!!

解决方案 »

  1.   

    init 是 boolean 类型,可以只保留 init 即可 ,不必再和 true/false 判等。
      

  2.   

    这里面if(!init) 就是如果 init是true 通过非运算符! 判断条件就变成false ,所以 !init与 init!=true和init==false效果完全一样但是你上面说的init=true init=false则不一样,一个等号只是赋值运算不是条件判断的运算,你认真看看 非运算符 那一块的知识吧
      

  3.   

    init本身就是boolean类型的,只有true和false两个值可以取,不需要用==和true或fals比较了。
      

  4.   

    如果改成 init==true 或init=false 或只留下init ,则if里的语句跳过不执行
    init==false,此表达式成立,所以该表达式的值为true,if中的code能执行,init=true为赋值表达式,表达式的值为最后的运算结果,即为true,所以code能执行,!init为true这应该没问题,下面的同上
      

  5.   

    只要对if里面的整个表达式判断,如果是true就执行里面的语句,false就不执行,这样思考比较好
      

  6.   

    先看括号里面的式子,判断是为false/true,在来判断逻辑,这样思维比较清楚!
      

  7.   

    init==true 或init=false 或只留下init 是false当然不会执行了。