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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨建聪 中级黑马   /  2013-2-27 22:23  /  2163 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运算符的优先级到底是什么样子的?
百度了,也没看懂那个表格
有知道怎么记忆和理解的么?

下面是习题:

思考一下代码运行结果:

System.out.println(1 + 2 * 3);                                       

System.out.println(false && true || true);               
System.out.println(true || true && false);

int a = 2;
int b = a + 3 * a++;
System.out.println(b);

int a = 2;
int b = a++ + 3 * a;
System.out.println(b);

int a = 1;
int b = 2;
System.out.println(a+++b);

谁能帮忙解答下

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

4 个回复

倒序浏览
当乘法和除法同时出现在表达式中时,每个运算都按照它们从左到右出现的顺序进行计算。当乘法和除法同时出现在表达式中时,每个运算也都按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。字符串连接运算符 (&) 不是算术运算符,但是,就其优先顺序而言,它在所有算术运算符之后,而在所有比较运算符之前。Like 的优先顺序与所有比较运算符都相同,实际上是模式匹配运算符。Is 运算符是对象引用的比较运算符。它并不将对象或对象的值进行比较,而只确定两个对象引用是否参照了相同的对象。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
System.out.println(1 + 2 * 3);  //1+(2*3)=7                                      

            System.out.println(false && true || true); //从左至右运算false&&true=false||true=true               
            System.out.println(true||true&&false );//从左至右运算true||(true&&false)=true||false=true   &&的优先级高于||
             
            int a = 2;
             int b = a + 3 * a++;
             System.out.println(b);//b=2+3*2=8 a自加变为3
           
            int a = 2;
             int b = a++ + 3 * a;
             System.out.println(b);//b=2+3*3=11,第一个a是先取值再自加为3的
             
            int a = 1;
             int b = 2;
             System.out.println(a+++b);//++的算符优先级高于+,所以是a++,a+++b=1+2=3,a++是先取值再自加的,a值变为2

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
java运算符优先级列表http://blog.csdn.net/xiaoli_feng/article/details/4567184
回复 使用道具 举报
你看看,这个好不好记,毕老师说用多了就熟悉了,不记也得记,哈哈!!

运算符优先级.jpg (88.22 KB, 下载次数: 41)

运算符优先级.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马