一、运算符
定义:运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
-
按照
功能
分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符
分类 | 运算符 |
---|---|
算术运算符(7个) | +、-、*、/、%、++、-- |
赋值运算符(12个) | =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等 |
比较(或关系)运算符(6个) | >、>=、<、<=、==、!= |
逻辑运算符(6个) | &、|、^、!、&&、|| |
位运算符(7个) | &、|、^、~、<<、>>、>>> |
条件运算符(1个) | (条件表达式)?结果1:结果2 |
Lambda运算符(1个) | -> |
-
按照
操作数个数
分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)
分类 | 运算符 |
---|---|
一元运算符(单目运算符) | 正号(+)、负号(-)、++、--、!、~ |
二元运算符(双目运算符) | 除了一元和三元运算符剩下的都是二元运算符 |
三元运算符 (三目运算符) | (条件表达式)?结果1:结果2 |
二、算术运算符
三、赋值运算符
赋值运算符: +=、 -=、*=、 /=、%=
赋值运算符不会改变变量本身的数据类型
int i = 1;
i *= 0.1;//即i = (int)i * 0.1
System.out.println(i);//0
i++;
System.out.println(i);//1
赋值运算符 | 符号解释 |
---|---|
+= | 将符号左边的值 和右边的值 进行相加 操作,最后将结果赋值给左边的变量 |
-= | 将符号左边的值 和右边的值 进行相减 操作,最后将结果赋值给左边的变量 |
*= | 将符号左边的值 和右边的值 进行相乘 操作,最后将结果赋值给左边的变量 |
/= | 将符号左边的值 和右边的值 进行相除 操作,最后将结果赋值给左边的变量 |
%= | 将符号左边的值 和右边的值 进行取余 操作,最后将结果赋值给左边的变量 |
四、比较运算符
-
> < >= <= :只适用于基本数据类型(除boolean类型之外)
== != :适用于基本数据类型和引用数据类型
五、逻辑运算符
-
运算符说明:
-
& 和 &&:表示"且"关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。
-
| 和 || :表示"或"关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false
-
! :表示"非"关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。
-
^ :当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。
-
理解:
异或,追求的是“异”!
-
-
-
区分“&”和“&&”:
-
相同点:如果符号左边是true,则二者都执行符号右边的操作
-
不同点:&& :如果符号左边是false,则不再继续执行符号右边的操作
-
建议:开发中,推荐使用 &&
-
-
区分“|”和“||”:
-
相同点:如果符号左边是false,则二者都执行符号右边的操作
-
不同点:| : 如果符号左边是true,则继续执行符号右边的操作
|| :如果符号左边是true,则不再继续执行符号右边的操作
-
建议:开发中,推荐使用 ||
-
六、位运算符
-
位运算符的运算过程都是基于二进制的补码运算
(1)左移:<<
运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
【注意】当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位
(2)右移:>>
运算规则:在一定范围内,数据每向右移动一位,相当于原数据/2。(正数、负数都适用)
【注意】如果不能整除,向下取整
。
(3)无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0。(正数、负数都适用)
(4)按位与:&
运算规则:对应位都是1才为1,否则为0。
-
1 & 1 结果为1
-
1 & 0 结果为0
-
0 & 1 结果为0
-
0 & 0 结果为0
(5)按位或:|
运算规则:对应位只要有1即为1,否则为0。
-
1 | 1 结果为1
-
1 | 0 结果为1
-
0 | 1 结果为1
-
0 & 0 结果为0
(6)按位异或:^
运算规则:对应位一个为1一个为0,才为1,否则为0。
-
1 ^ 1 结果为0
-
1 ^ 0 结果为1
-
0 ^ 1 结果为1
-
0 ^ 0 结果为0
(7)按位取反:~
运算规则:对应位为1,则结果为0;对应位为0,则结果为1。
-
~0就是1
-
~1就是0
七、条件运算符(三元运算符)
-
条件运算符格式: (条件表达式)? 表达式1:表达式2
-
如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型