运算符:
- 算术运算符: 加减乘除求余 + , - , * , / , %
当参与/运算的两个操作数都是整数时, 表示整数除法, 否则表示浮点除法.
例: 15 / 2 = 7; 15 % 2 = 1; 15.0 / 2 = 7.5
整数被0除会产生一个异常, 浮点数被0除将会得到无穷大或NaN结果.
- 二元运算符:+=, *=, %=
x += 4 等价于 x = x + 4 (通常将运算符放在赋值号的左侧, 如*=, %=)
- 自增运算符和自减运算符:
int n = 12;
n++; 后缀方式先运算在加1
++n; 前缀方式先进行加1再运算
- 关系运算符与boolean运算符
== , != , > , < , >= , <= , && , || , ! , ?:
&&与||是按照短路的方式
- 位运算符(暂时看不懂!!):
& , | , ^ , ~ , >> , <<
&与|不按照短路的方式, 必须计算两个操作数的值.
^: 异或
~: 非
>> , <<: 移位运算符
运算符优先级:
运算符 结合性
[].() (方法调用) 从左向右
! ~ +(正) -(负) ~ ++ -- ()(强制类型转换) new 从右向左
* / % 从左向右
+(加) -(减) 从左向右
<< >> >>> 从左向右
< <= > >= instanceof 从左向右
== != 从左向右
&(按位与) 从左向右
^ 从左向右
| 从左向右
&& 从左向右
|| 从左向右
?: 从右向左
= += -= *= /= %= &= |= ^= <<= >>= >>>= 从右向左
&& 优先级高于||:
a && b || c 等价于 (a && b) || c
+= 是右结合运算符所以:
a += b += c 等价于 a += (b += c) // 将c加到b上之后, 再将b加到a上
taps:
1. 优先级是从高到低书写的
2. 结合性是元素安抚结合的顺序, 通常从左到右. 从右向左指符合与运算符右侧的内容结合.
3. instanceof是判断对象是否为某个类或接口类型
4. 对于不太清除的优先级, 可以使用小括号去书写, 也便于阅读.