黑马程序员技术交流社区
标题:
java运算符的优先级问题
[打印本页]
作者:
范二青年
时间:
2014-1-10 10:39
标题:
java运算符的优先级问题
运算符的优先级到底是什么样子的?
百度了,也没看懂那个表格
有知道怎么记忆和理解的么?
下面是习题:
思考一下代码运行结果:
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);
谁能帮忙解答下
作者:
骄傲的倔强
时间:
2014-1-10 10:45
如果没有括号的话,按照数学计算的优先级,也就是乘除优先于加减,如果有()的话,()的优先级最高,必须先算括号里面的计算。 括号里面的运算还是按照乘除高于加减。 楼主只要记得()的优先级最高就行了,其他的跟数学计算的一样。
作者:
渐渐不懂了
时间:
2014-1-10 11:44
java的运算优先级没有必要完全记忆,你想让那个先执行就加括号,只要记住一般应遵循的原则就行了,象开发那样的你是不会遇到你的上面的情况的,要是考试的话可能有,那你在考试前记住几个常用的就行了
作者:
IT人
时间:
2014-1-10 13:31
优先级级别的高低进行计算,级别高的运算符先运算,级别低的运算符后计算,具体运算符的优先级见下表:
运算符优先级表
优先级
运算符
结合性
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); //这样更直观
这样书写代码,更方便编写代码,也便于代码的阅读和维护。
我也没有认真记过这些东西都是写代码的时候算查的!把这个表格给你!应该能看懂!一起学!不清楚的时候就来看两眼,不需要专门记住,用多了就记住了
作者:
xu6148152
时间:
2014-1-10 13:51
跟正常的思维一致,如果搞不是很清楚的话,可以用括号就好了。同级运算符从左到右的顺序
作者:
boolcardy
时间:
2014-1-15 00:04
给你来个全的
从高到低的次序是:【】。()。++。 --。 !。 ~。 instanceof。 *。 /。 %。 +。 -。 << 。>>。 >>>。 <>。 <。 =。 >。 \。 ==。!=。 &。 ^。 &&。 ||。 ? : 。=
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2