好记性不如烂笔头,记录下来以备以后查询,内容来之网上,自己整理,希望能帮助初学者。
JAVA运算符优先级
优先级 |
运算符 |
结合性 |
1 |
() [] . |
从左到右 |
2 |
! +(正) -(负) ~(非运算) ++ -- |
从右向左 |
3 |
* / % |
从左向右 |
4 |
+(加) -(减) |
从左向右 |
5 |
<< >>(算数右移) >>>(逻辑右移) |
从左向右 |
6 |
< <= > >= instanceof |
从左向右 |
7 |
== != |
从左向右 |
8 |
&(按位与) |
从左向右 |
9 |
^(异或) |
从左向右 |
10 |
| |
从左向右 |
11 |
&& |
从左向右 |
12 |
|| |
从左向右 |
13 |
?: |
从右向左 |
14 |
= += -= *= /= %= &= |= ^= ~= <<= >>= >>>= |
从右向左 |
说明:
1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
2、 结合性是指运算
算术
单目:+(取正)-(取负) ++(自增1) - -(自减1)
双目:+ - * / %(取余)
三目:a>b?true:false
关系
等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。
位与逻辑
位运算符 与(&)、非(!)、或(|)、异或(^)
&:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
! :0变1,1变0
^ :两边的位不同时,结果为1,否则为0.如1100^1010=0110
逻辑运算符
短路与(&&)、非(!)、短路或(||)
赋值
= += -= *= /= %= &= ^= |= <<= >>=
instanceof
该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。
位移
<< 带符号左移 >>带符号右移 >>> 无号右移
运算符优先级
按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。