运算符
运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。
按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。
按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
算术运算符
单目运算符
- ~(按位取反)
- ! (取非)
- -(负号运算符)
- ++(自增)
- —(自减)
双目运算符
- +(加)
- -(减)
- *(乘)
- /(除)
- %(取余)
- instanceof
- 左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
三目运算符
a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;
这整个运算符包括一个关系运算符(可以是> < !=
等等),一个?
,一个:
,冒号前后需要有两个表达式或者是值或者是对象。
关系运算符
- ==(等于符号)
- !=(不等于符号)
- >(大于符号)
- <(小于符号)
- >=(大于等于符号)
- <=(小于等于符号)
位运算符
- &(与)
- 双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
- ~(取反)
- 0变1,1变0
- |(或)
- 当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
- ^(异或)
- 两边的位不同时,结果为1,否则为0。如1100^1010=0110
位移运算符
- <<(带符号左移)
- >>(带符号右移)
- >>>(无符号右移)
逻辑运算符
- &&(并)
- !(非)
- ||(或)
赋值运算符
- =(赋值)
- +=(加并赋值)
- -=(减并赋值)
- *=(乘并赋值)
- /=(除并赋值)
- %=(求余并赋值)
- &=(与并赋值)
- ^=(异或并赋值)
- |=(取反并赋值)
- <<=(带符号左移并赋值)
- >>=(带符号右移并赋值)
- >>>=(无符号右移并赋值)
运算符优先级
序列号 | 符号 | 结合性(与操作数) |
---|---|---|
1 | .、()、[] | 从左到右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |