Java运算符优先级和结合性
2018-09-06 本文已影响15人
测试老杨
问题
如下代码运行结果是啥?
package day06;
public class YzcOperatorTest {
public static void main(String[] args) {
int a=1,b=2;
boolean flag = a<b||b<a&&a+b<0;
System.out.println(flag);//true
}
}
运算符优先级
该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级16的优先级最低。
image.png
运算符的结合性
相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合和从右到左结合两种方式。
比如:
表达式a+b+c
+是从左向右结合(左结合)的,那么该表达式被解析为 (a+b)+c
表达式a=b=c
=是从右向左结合(右结合)的,那么该表达式被解析为a=(b=c)
表达式a > b ? b > c ? 1 : 0 : 2
?:是从右向左结合(右结合)的,那么该表达式被被解析为 a > b ? (b > c ? 1 : 0) : 2
参考资料
http://www.cnblogs.com/zjfjava/p/5996666.html
http://www.cnblogs.com/softwaretesting/archive/2011/08/16/2139068.html