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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范二青年 中级黑马   /  2014-1-10 10:39  /  1375 人查看  /  5 人回复  /   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技术分 +2 收起 理由
wym + 2 赞一个!

查看全部评分

5 个回复

倒序浏览
如果没有括号的话,按照数学计算的优先级,也就是乘除优先于加减,如果有()的话,()的优先级最高,必须先算括号里面的计算。  括号里面的运算还是按照乘除高于加减。   楼主只要记得()的优先级最高就行了,其他的跟数学计算的一样。
回复 使用道具 举报
java的运算优先级没有必要完全记忆,你想让那个先执行就加括号,只要记住一般应遵循的原则就行了,象开发那样的你是不会遇到你的上面的情况的,要是考试的话可能有,那你在考试前记住几个常用的就行了
回复 使用道具 举报

优先级级别的高低进行计算,级别高的运算符先运算,级别低的运算符后计算,具体运算符的优先级见下表:
运算符优先级表
优先级
运算符
结合性
1
() [] .
从左到右
2
! +(正) -(负) ~ ++ --
从右向左
3
* / %
从左向右
4
+(加) -(减)
从左向右
5
<< >> >>>
从左向右
6
< <= > >= instanceof
从左向右
7
== !=
从左向右
8
&(按位与)
从左向右
9
^
从左向右
10
|
从左向右
11
&&
从左向右
12
||
从左向右
13
?:
从右向左
14
= += -= *= /= %= &= |= ^= ~= <<= >>= >>>=
从右向左
  说明:
  1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
  2、 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
  3、 instanceof作用是判断对象是否为某个类或接口类型,后续有详细介绍。
  4、 注意区分正负号和加减号,以及按位与和逻辑与的区别
  其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代,示例代码:
int m = 12;
int n = m << 1 + 2;
int n = m << (1 + 2); //这样更直观
这样书写代码,更方便编写代码,也便于代码的阅读和维护。
我也没有认真记过这些东西都是写代码的时候算查的!把这个表格给你!应该能看懂!一起学!不清楚的时候就来看两眼,不需要专门记住,用多了就记住了

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
跟正常的思维一致,如果搞不是很清楚的话,可以用括号就好了。同级运算符从左到右的顺序
回复 使用道具 举报
给你来个全的
从高到低的次序是:【】。()。++。 --。 !。 ~。 instanceof。   *。   /。  %。 +。 -。  << 。>>。  >>>。 <>。  <。  =。  >。 \。  ==。!=。 &。 ^。 &&。  ||。 ? : 。=
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马