A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZHAOWEI 中级黑马   /  2014-5-10 21:19  /  1618 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);

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

11 个回复

倒序浏览
  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:36 编辑

楼上正解  - -
回复 使用道具 举报
运算优先级问题
回复 使用道具 举报
例子一中你根本没有必要定义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));
复制代码
回复 使用道具 举报
一个是书写代码的时候要注意优先级,
二个是对代码的优化,不必要的重复的一些代码就可以去掉咯。
呜哈哈,呜哈哈,唔哈。
                                   PS知道是什么歌么。嘿嘿。
回复 使用道具 举报
lzhuas 发表于 2014-5-10 21:31
经测试,是因为运算符的优先级造成的,代码我修改过了,共同学习学习

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

哦,这样啊,不过去掉e,e就没的赋值了,但e貌似在这里确实有点多余。
回复 使用道具 举报
lzhuas 中级黑马 2014-5-11 10:21:03
9#
ZHAOWEI 发表于 2014-5-11 06:39
原来是这样啊,可是我们上课好像还没有讲到运算符的优先啊,还是我没注意听啊? ...

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

是啊,那你真好,还有基础。
回复 使用道具 举报


:'(大神,给我点技术分吧!我真的不容易啊,我上课才上了5天,以前也没有基础,现在只学到这了。我也想提问点有深度的问题,可是真的木有啊。这些问题都是我在做练习的时候遇到的问题,真心的不是随便发的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马