碰到一个以前没注意过的问题关于boolean的“=”“==”的问题如题,如当我用if(BlnRun = true) {
//TODO
}时,我原本以为这样会出现语法错误,因为我是由int型的数值做这样判断时会报语法错误而得出的,比如if(IntA=1) {
//TODO
}这样会报语法错误,那为何if(BlnRun = true) {
//TODO
}没有语法错误呢?我后来稍微深入比较了一下,if(BlnRun = true) {
//TODO
}与if(BlnRun == true) {
//TODO
}的区别,发现,它们的执行结果不一样,为什么?
真是惭愧啊,学了这么长时间的java,竟没在意过这一点,唉!

解决方案 »

  1.   

    我以前也还真的不晓得,楼主可以告诉我有什么区别吗?   是不是BlnRun = true  是赋值。
      

  2.   

    BlnRun = true的值就是true 
    i=3的值就是3
    if(3)显然有语法错误
    if(true)就没问题了
      

  3.   


            boolean f = false;
            if (f = false)
            {
                System.out.println(123);
            }
            if (f = true)
            {
                System.out.println(123);
            }在if后面的判断条件里,写 = 的话,就是先赋值
    给变量 f 赋值,然后判断 f 是true 还是 false 如果用int类型会报错,就是因为赋值结束后,准备判断了,发现该变量竟然不是 boolean 型,就错了
      

  4.   

    if(BlnRun=true)  是先BlnRun赋值为true 然后 if(true) 是没有问题的。 但if(BlnRun=1) 把BlnRun赋值为1后 if(1)是会报错的。至于if(BlnRun=true)和if(BlnRun==true)的区别,就是前面一个是赋值所有永远是true 而后一个 要比较是否为true
      

  5.   

    int i=3;
    int j=4+(i=5);
    j=?
      

  6.   

    if(BlnRun = true)可以分解为两句话,第一句是BlnRun = true,把BlnRun赋值为true,第二句是if(BlnRun),判断BlnRun是否为真,因为已经赋值为true,所以一定为真。不会有语法错误的,boolean型的BlnRun赋值BlnRun = true是没有错的
      

  7.   

    if(b = true) {}表示先将 b 的值设为 true,再用 b 的值作为 if 的表达式进行条件判断,该代码与这段代码效果是一样的:b = true;
    if(b) {}对于 boolean 型变量在进行条件判断时,应直接采用其变量,比如:if(a);a ? 1 : 2,而不建议采用 if(a == true);a == true ? 1 : 2,这种画蛇添足的写法!
      

  8.   

    “=”是赋值运算符,赋值成功为1,赋值失败为0,“==”是判断运算符,左右相等为1,左右不等为0,但还是不能理解为什么“if(IntA=1)”不能通过,“if(BlnRun = true)”能通过,期待高手出现
      

  9.   

    没深入研究。。不过判断都是用==的
    上面说的=TRUE是赋值。。很有道理
      

  10.   

    用三角形举个咧要判断是不是的方法如下:
    class Triangle{
      ABC(){
          A=a;
          B=b;
          C=c;}
       setABC(double a,double b,double c){
            this a=a;
             this b=b;
              this c=c; }
      void settriangle(double a,double b,double c){
       if(a+c<b||a+b<c||c+b<a){
      System.out.println("它不是一个三角形")
       }  
       boolean =Triaangle
         if(boo){
        System.out.println(Triengle.settrigle())
          } 
        }
      }
    }