黑马程序员技术交流社区

标题: Boolean出错 [打印本页]

作者: ZHAOWEI    时间: 2014-5-10 21:19
标题: Boolean出错
class Demo
{
        public static void main(String[] args)
        {
                int a=43,b=89,c=22;

                //形式一
                boolean e;
                System.out.println("a>b:"+e=(a>b));
                System.out.println("a!=b:"+e=(a!=b));
                System.out.println("a==b:"+e=(a==b));

                //为什么报错意外的类型,这样为什么不能直接得到一个布尔类型的结果?


                //形式二
                boolean d=a>b;
                System.out.println("a>b:"+d);
                boolean j=a>c;
                System.out.println("a>c:"+e);
                boolean f=b>c;
                System.out.println("b>c:"+f);

                //这样为什么可以得到一个结果?
        }
}

作者: lzhuas    时间: 2014-5-10 21:31
  1. package day12;

  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int a=43,b=89,c=22;

  7.                 //形式一
  8.                 boolean e;
  9.                 System.out.println("a>b:"+(e=(a>b)));
  10.                 System.out.println("a!=b:"+(e=(a!=b)));
  11.                 System.out.println("a==b:"+(e=(a==b)));

  12.                 //为什么报错意外的类型,这样为什么不能直接得到一个布尔类型的结果?


  13.                 //形式二
  14.                 boolean d=a>b;
  15.                 System.out.println("a>b:"+d);
  16.                 boolean j=a>c;
  17.                 System.out.println("a>c:"+j);
  18.                 boolean f=b>c;
  19.                 System.out.println("b>c:"+f);

  20.                 //这样为什么可以得到一个结果?
  21.         }
  22. }
复制代码
经测试,是因为运算符的优先级造成的,代码我修改过了,共同学习学习

作者: 轻语。    时间: 2014-5-10 21:34
本帖最后由 伍叶竹 于 2014-5-10 21:36 编辑

楼上正解  - -
作者: 种一棵树    时间: 2014-5-10 23:16
运算优先级问题
作者: snowaves    时间: 2014-5-10 23:45
例子一中你根本没有必要定义e啊,直接去掉“e=”就好了,定义了之后运算的优先级是先打印出e然后继续往下运算。而例子二中就不存在这个问题,例子一的代码改成这样会好一点。
  1. System.out.println("a>b:"+(a>b));
  2.                 System.out.println("a!=b:"+(a!=b));
  3.                 System.out.println("a==b:"+(a==b));
复制代码

作者: 彭飞    时间: 2014-5-11 00:17
一个是书写代码的时候要注意优先级,
二个是对代码的优化,不必要的重复的一些代码就可以去掉咯。
呜哈哈,呜哈哈,唔哈。
                                   PS知道是什么歌么。嘿嘿。
作者: ZHAOWEI    时间: 2014-5-11 06:39
lzhuas 发表于 2014-5-10 21:31
经测试,是因为运算符的优先级造成的,代码我修改过了,共同学习学习

原来是这样啊,可是我们上课好像还没有讲到运算符的优先啊,还是我没注意听啊?
作者: ZHAOWEI    时间: 2014-5-11 06:44
snowaves 发表于 2014-5-10 23:45
例子一中你根本没有必要定义e啊,直接去掉“e=”就好了,定义了之后运算的优先级是先打印出e然后继续往下运 ...

哦,这样啊,不过去掉e,e就没的赋值了,但e貌似在这里确实有点多余。
作者: lzhuas    时间: 2014-5-11 10:21
ZHAOWEI 发表于 2014-5-11 06:39
原来是这样啊,可是我们上课好像还没有讲到运算符的优先啊,还是我没注意听啊? ...

的确是没有讲过,我也是你提出来我才发现的,但这个一般很少会遇上的,以前学过C就知道这一点
作者: 彭旭文    时间: 2014-5-11 12:34
编译失败的原因是因为运算符的优先级所造成的...在未给e赋值之前,system已经要求打印e了,但是e没赋值。要想打印e,必须要用( )提升赋值运算的优先级。
作者: ZHAOWEI    时间: 2014-5-11 20:54
lzhuas 发表于 2014-5-11 10:21
的确是没有讲过,我也是你提出来我才发现的,但这个一般很少会遇上的,以前学过C就知道这一点 ...

是啊,那你真好,还有基础。
作者: ZHAOWEI    时间: 2014-5-11 21:17
伍叶竹 发表于 2014-5-10 21:34
楼上正解  - -


:'(大神,给我点技术分吧!我真的不容易啊,我上课才上了5天,以前也没有基础,现在只学到这了。我也想提问点有深度的问题,可是真的木有啊。这些问题都是我在做练习的时候遇到的问题,真心的不是随便发的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2