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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wahaha 中级黑马   /  2013-2-26 22:52  /  1484 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏添 于 2013-3-11 21:21 编辑

今天碰到一道小题,求解释..  之前一直觉得()的优先级是最高的,直到...
class Demo
{
        public static void main(String[] args)
        {
                int a = 2;
                int b = a+++(a*3);
        System.out.println(b);
        }
}

打印结果是11..可以推断运算过程是  b = 2+(3*3)..但是请问为神马是这样的运算过程??
网上查了关于java的优先级问题,没有唯一标准....

5 个回复

倒序浏览
优先级是相对的,b=2+(3*3),2是取得a的值,第一个3是a++,因为++的优先级高于()的优先级
回复 使用道具 举报
你可以搜java运算符优先级表看看
回复 使用道具 举报
本帖最后由 夏添 于 2013-2-26 23:20 编辑
崔芝鲁 发表于 2013-2-26 23:02
优先级是相对的,b=2+(3*3),2是取得a的值,第一个3是a++,因为++的优先级高于()的优先级 ...

同学..好像不对吧?
优先级最高的是.      []      {}      ,  这四个
++    --    ~   !这四个排在第二优先级
参阅 java 就业培训教程---张孝祥   第二章    P.51
张老师说其中的原因难以理解...
回复 使用道具 举报
优先级最高的是 .  []  ()  不过这道题是这么理解的  a+++(a*3) 化为 (a++)+(a*3)  +号的结合性是从左到右  所以先计算 a++ 得3  ,在计算 a*3 得9,同学那不是就是12吗?  不是  因为++的结合性是从右到左  所以参加加法运算的是a,这和 int a=3,b;  b=a++;  b得3一个道理。所以最后得11
回复 使用道具 举报
本帖最后由 崔芝鲁 于 2013-2-27 00:04 编辑
夏添 发表于 2013-2-26 23:17
同学..好像不对吧?
优先级最高的是.      []      {}      ,  这四个
++    --    ~   !这四个排在第二优 ...

是这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马