因为boo=false后这个表达式的值事false,所以if条件为假,故而打出true.

解决方案 »

  1.   

    确实是挺奇怪的一件事。如果该为if(boo = true),则输出的是false。这岂不是说 if(boo=false)与if(boo==false)等效了吗?:)
    算了,别计较这些了,还是按规范的写吧。:)
      

  2.   

    楼上的 if (boo=true) 和 if(boo==false)这两者是完全的两个概念问题,并不等同!
    前者是在赋值等同于if (true)而后者是在进行boolean类型的比较等同于if (true==false),显然true==false的结果是false
    ,所以间接等同于if (false)
      

  3.   

    同意楼上的,if(boo=false) 就等同于if(false);
      

  4.   

    对,楼上的说的有道理
    boo=false 就等于false
    boo=true 就等于 true。
      

  5.   

    不以这样写吧,这样的话boo的值不就变了吗?
    如果别的地方也用这个标志呢?
      

  6.   

    我倒觉得应该这样理解:
    if(boo=false)
    就相当于:
    if(boo){}
    boo=false;
    因为先前boo已经等于true了所以if(boo)肯定成立拉,就是说if(boo=false)这个成立
      

  7.   

    执行完上面的程序boo就变为flase了,先判断后附值
      

  8.   

    if(boo=false)
    是先赋值后判断
    相当于
    boo = false;
    if (boo)
    {}
      

  9.   

    楼上的弟兄说得不对,小弟试一试。
      无论你是
    “boolean boo = true;
    if(boo=false) System.out.println("false");
    else System.out.println("true");”
    这样还是  
    boolean boo = true;
    if(boo=true) System.out.println("false");
    else System.out.println("true");输出的结果都是“true”!换一句话也就是说,无论你如何判断,都将输入同一个结果。具体的什么小弟就不知道了!希望与大家共同研究讨论这个问题。小弟非常之关注和!!!!!!
      小弟有一大胆的猜测不知道通通不,不过努力的想总是不会错的吧!
      可能是表达式有错,系统直接认为是错误!或者是当系统运行到
    if (boo=false) System.out.println("false");
    只给boo赋值为false,再判断,不过话又说回来了,给boo赋值后为假才打印出"true",不过我给boo赋值为真也不打印出"false"。这是为什么?小弟现在迷茫了,兄弟们救救我,HELP ME!!!
      ???????????????????????????????????????????????????????????????????????
      

  10.   

    在if,while等命令后的()中是允许赋值的,
    boo = true 其实和 while((line=readLine(lineArr,ai))!=null){}中line 的 line=readLine(lineArr,ai)一样,是赋值语句。我认为编译时是将值先付给boo然后用boo的值作为判断的条件就像楼上playgb(溯缘)说得那样if(boo=false)
    相当于
    boo = false;
    if (boo)
    {}
      

  11.   

    if(boo=false)与if(boo==false)?第一种写法是先执行boo=false赋值语句,然后再判断boo的值,相当于: boo=false;  --->  if(boo)显然,该语句永远返回false(相当于if(false))后者if(boo==false)是判断boo的值是否为false,是正确的写法!换句话说,“=”是赋值符号,“==”是等于符号!
      

  12.   

    如果你用的是java,很可能是高速缓存没有清空导致,编译前,先把前面编译好的类文件删除,再重新编译、运行,就应该可以了!
      

  13.   

    在IF语句中,不管boo=false还是boo=true,编译器无法解析该语句,返回的结果都是false,所以始终输出else的内容;如果是==则编译器能解析,执行相应支路语句.
      

  14.   

    谁说无法编译的啊,你的不知道是什么编译器来的
    你试试这两个程序:
    boolean boo = true;
    System.out.println(boo);
    if(boo=false) System.out.println("false");
    else System.out.println("true");
    System.out.println(boo);
    结果
    true
    true
    false程序2:
    boolean boo = true;
    System.out.println(boo);
    if(boo=true) System.out.println("false");
    else System.out.println("true");
    System.out.println(boo);
    结果2:
    true
    false
    true
    说来好多次是先附值再判断拉,还在骗其他人,不信试试看!
      

  15.   

    if(statement) 在java中是完全可以的!
    当然,该语句我还进行了实验,语法上没错误!而且我试验的结果也是正常的!
    问题应该是高速缓存或编译时编译器监测错误,没有将原来的.class文件覆盖,按我上面说的方法应该可以!
      

  16.   

    我的结果和楼上的完全一样
    agree  jimok(Jim)
      

  17.   

    同志们何必那么测试这样来吧,就可以知道 boo = false;表达式的值为false,而boo = true;表达式的值为true.
         boolean boo = false;
         System.out.println(boo = true);
         System.out.println(boo = false);
         System.out.println(boo == true);
         System.out.println(boo == false);
    输出是
    ture
    false
    false
    true
    其实这是java中为了免除象c++中的if(x = ...)这样的错误而实行的一种机制,每个表达式都有其值,如:"int = 2;"的值为2.
    所以你甚至可以写如下的式子: 
    int i =2;
    i = i * (i = 3);
      

  18.   

    这个是程序的执行顺序问题,if(boo=false) 是先把false赋给boo变量,然后再判断,这个赋值的结果是false,所以就执行else的部分,就这么简单。