运算符、操作数、表达式
优先级、结合性
分类依据优先级、操作数个数、功能分类 其他
一、基本概念运算符:表示运算符的符号,又称操作符
操作数:运算或者操作的对象
表达式:常量、变量、或者能够计算出结果的一串常量、变量和运算符的组合。例如123、x、x+123,三者属于表达式
提及运算符,除了运算符本身的功能外(例如、+表示加法),最重要的应该是优先级和结合性了 ,因为它们决定了表达式中运算符进行运算时的先后顺序。如下表所示,列举了java中优先级从高到低的运算符
| 优先级 | 运算符 | 结合性 |
|---|---|---|
| 1 | () [] . | 左 |
| 2 | ! ~ +正号 - 负号 ++ – | 右 |
| 3 | * / % | 左 |
| 4 | + 加 - 减 | 左 |
| 5 | << >> >>> | 左 |
| 6 | < <= > >= instanceof | 左 |
| 7 | == != | 左 |
| 8 | & | 左 |
| 9 | ^ | 左 |
| 10 | | | 左 |
| 11 | && | 左 |
| 12 | || | 左 |
| 13 | ?: | 右 |
| 14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 右 |
1 在表达式中优先级高的运算符先进行运算。
例如,算术运算中先计算乘除,后计算加减
2 运算符优先级相同时,依据结合性判断运算顺序。(详细内容参考【c语言的左结合性与右结合性】)
例如,加减运算为左结合性,应从左到右依次执行运算符,表达式1+2-3,即先算+后算-;
赋值运算符(=)为右结合性,应该从右到左依次执行运算符
int a,b=1,c=2
a=b=c
应该先执行b=c,后执行a=b,最终结果a=2,b=2;
假设赋值运算符为左结合性,那么应该先执行a=b,后执行b=c,最终结果a=1,b=2;
3 括号可以改变运算符的优先级。当需要使用结合性判断运算符运算顺序或者由于不同语言优先级规则有些许不同,为了消除对优先级规则的依赖时,应该使用括号。
单目运算符:! ~ +正号 - 负号 ++ –
三目运算符:? :
双目运算符:+ - * / 等等
| 功能 | 运算符 |
|---|---|
| 算术运算符 | + 、-、 * 、/ 、% |
| 关系运算符 | < 、<=、 > 、>= 、== 、!= 、instanceof |
| 逻辑运算符 | &&、 | | 、! |
| 位运算符 | ~、|、^、& |
| 移位运算符 | << 、>> 、 >>> |
| 赋值运算符 | =、+= -= *= /= %= &= |= ^= ~= <<= >>= >>>= |



