目录
一、运算符的分类
1、算术运算符
Java中,使用算术运算符+、-*、/、%、++、--表示加、减、乘、除、求余、自增、自减运算。
运算符 | 描述 |
+ | 正号运算符 |
- | 负号运算符 |
+ | 加号运算符 |
- | 减号运算符 |
* | 乘号运算符 |
/ | 除号运算符 |
% | 求余运算符 |
++ | 自增运算符 |
-- | 自减运算符 |
2、赋值运算符
运算符 | 描述 |
= | 赋值 |
+= | 加等于 |
-= | 减等于 |
*= | 乘等于 |
/= | 除等于 |
% | 模等于 |
赋值运算符和复合的赋值运算符的结合性都是从右到左,将右边表达式的值赋值给左边的变量。
3、关系运算符
运算符 | 描述 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
关系运算符又称比较运算符,其运算结果为布尔类型(true或false)。
4、逻辑运算符
运算符 | 描述 |
! | 逻辑非 |
&& | 逻辑与 |
|| | 逻辑或 |
这里注意,当进行&&运算时,如果左边表达式的值为false,右边表达式不会进行运算;当进行||运算时,如果左边表达式的值为true,右边表达式也不会进行运算,这种现象称为短路,因此&&和||又称为短路与和短路或。
5、条件运算符
条件运算符由两个符号?和:组成,要求有三个操作对象,所以条件运算符是三目运算符。
书写格式:表达式1?表达式2:表达式3;
解释:先求解表达式1,若表达式1为真值,则表达式2就作为整个条件表达式的值;若表达式1的值为假值,则表达式3就作为整个条件表达式的值。
6、位运算符
运算符 | 描述 |
& | 位与 |
| | 位或 |
^ | 异或 |
~ | 位非 |
<< | 左移 |
>> | 右移 |
>>> | 带符号右移 |
位与&:对&左右值的二进制数的每一位进行与运算。
位或|:对|左右值的二进制数的每一位进行或运算。
异或^:对^左右值的二进制数的每一位对应值进行异或运算,相同返回false,不同返回true。
位非~:对数值的二进制数的每一位进行取反运算(包括符号位)。
左移<<:将数值的二进制数每一位都向左移动一位,最右边一位补0。
右移>>:将数值的二进制数每一位都向右移动一位,符号位填充高位(正数最左边补0,负数最左边补1)。
带符号右移>>>:二进制所有位(包括符号位)右移1位,并在高位补0。
二、运算符的优先级与结合性
优先级 | 描述 | 运算符 | 结合性 |
1 | 括号运算符 | () | 自左至右 |
2 | 逻辑非、自增、自减 | !、++、-- | 自右至左 |
3 | 算术运算符 | *、/、% | 自左至右 |
4 | 算术运算符 | +、- | 自左至右 |
5 | 位运算符 | >>、<<、>>> | 自左至右 |
6 | 关系运算符 | >、<、>=、<= | 自左至右 |
7 | 关系运算符 | ==、!= | 自左至右 |
8 | 位逻辑运算符 | & | 自左至右 |
9 | 位逻辑运算符 | ^ | 自左至右 |
10 | 位逻辑运算符 | | | 自左至右 |
11 | 逻辑运算符 | && | 自左至右 |
12 | 逻辑运算符 | || | 自左至右 |
13 | 条件运算符 | ?: | 自右至左 |
14 | 赋值运算符 | =、+=、-=、*=、/=、%= | 自右至左 |
编写程序时尽量使用()来实现想要的运算顺序,以免产生歧义。