Java中的六大类运算符:
1、算数运算符、
2、赋值运算符、
3、关系运算符、
4、逻辑运算符、
5、位运算符、
6、条件运算符:
1、算数运算符 | ||
+ | 正号,加,字符串相加 | “+”除字符串相加功能外,还能把非字符串转换成字符串。例: System.out.println('*' + '\t' +'*'); 输出:93 |
- | 负号,减 | |
* | 乘 | |
/ | 除 | 如果两个操作数是整数,结果也是整数,会舍弃小数部分。 如果其中一个是浮点型,结果也是浮点型,保留小数部分。 |
% | 取余(取模) | 如果两个操作数是整数,结果也是整数。 如果其中一个是浮点型,结果也是浮点型,保留小数部分。 |
++ | 自增(前):先运算后取值 自增(后):先取值后运算 | |
- - | 自减(前):先运算后取值 自减(后):先取值后运算 | |
2、赋值运算符(赋值运算符“=”与算数运算符结合,组成复合赋值运算符。) | ||
= | 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理 | |
+= | 例:i+=j; 等价于:i=i+j; | |
-= | ||
*= | ||
/= | ||
%= | ||
3、关系运算符(比较运算符) | ||
== | 1、“==”是等于,“=”是赋值。 2、>、<、>=、<=只支持数值类型的比较。 3、==、!=支持所有数据类型的比较,包括数值,布尔,引用。 4、>、<、>=、<= 优先级别高于 ==、!= 5、运算结果是布尔类型。 | |
!= | ||
>= | ||
<= | ||
> | ||
< | ||
4、逻辑运算符 (1、操作数只能是布尔类型,结果也是布尔类型。) (2、优先级别:! > & > ^ > | > && > || 。) | ||
& | 与 | |
| | 或 | |
^ | 异或 | 两个操作数相同为false,不同为true。 |
&& | 短路与 | 短路与 当左侧为false时,结果为false,右侧则不参与计算。 |
|| | 短路或 | 短路或 当左侧为true时,结果为true,右侧则不参与计算。 |
! | 非 | |
5、位运算符 (1、以二进制位为单位进行运算。) (2、系统中以补码保存,所以操作的也是其补码。) (3、如果操作数是char、byte、short,位运算前其值会自动晋升为int,运算结果也是int类型。) | ||
& | 按位与 | |
| | 按位或 | |
^ | 按位异或 | |
~ | 按位取反 | |
<< | 左移 | 右侧空位补0。(一个整数每左移一位,其值扩大两倍,前提是移出位中不包含有效数字。) |
>> | 右移 | 左侧空位补最高位,即符号位。(一个整数每右移一位,其值缩小1/2,前提是溢出位中不包含有效数字。) |
>>> | 无符号位右移 | 左侧空位补0。 |
6、条件运算符(唯一的需要三个操作数的运算符,所以又称三目运算符或三元运算符) | ||
条件?表达式1:表达式2 | 如果条件为true,返回表达式1的值,为false则返回表达式2的值 |
1、结合性从右到左的只有赋值运算符,单目运算符和三目运算符。 2、总体来说,算数运算>关系运算符>逻辑运算符 | ||
优先级 | 运算符 | 结合性 |
1 | ()、[ ] | 左→右 |
2 | |、~、++、- - | 从右向左 |
3 | *、/、% | 左→右 |
4 | +、- | 左→右 |
5 | <<、>>、>>> | 左→右 |
6 | >、<、>=、<=、instanceof | 左→右 |
7 | ==、!= | 左→右 |
8 | & | 左→右 |
9 | ^ | 左→右 |
10 | | | 左→右 |
11 | && | 左→右 |
12 | || | 左→右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、%=、(&=、|=、^=、~=、<<=、>>=、>>>=) | 从右向左 |