抖音教学视频
目录
大纲:
1、定义
定义:运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等
运算符的分类
1)按功能分类:
1)算术运算符(7个) +、-、*、/、%、++、--
2)赋值运算符(12个) =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=
3)比较(或关系)运算符(6个) >、>=、<、<=、==、!=
4)逻辑运算符(6个) &、|、^、!、&&、||
5)位运算符(7个) &、|、^、~、<<、>>、>>>
6)条件运算符(1个) (条件表达式)?结果1:结果2
7)Lambda运算符(1个) ->
按操作数个数分类:
1)一元运算符(单目运算符) 正号(+)、负号(-)、++、--、!、~
2)二元运算符(双目运算符) 除了一元和三元运算符剩下的都是二元运算符
3)三元运算符 (三目运算符) (条件表达式)?结果1:结果2
2、算术运算符
符号 | 名称 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | -4 | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取余 | 7%5 | 2 |
++ ++ | 自增 符号在前面,先运算,后赋值 符号在后面,先赋值,后运算 | a=2; b=++a; a=2; b= a++; | a=3,b=3 a=3,b=2 |
-- -- | 自减 符号在前面,先运算,后赋值 符号在后面,先赋值,后运算 | a=2; b=--a; a=2; b= a--; | a=1,b=1 a=1,b=2 |
+ | 字符串连接 | "111" + "2" | "1112" |
2.1、加号
“+”号的三种用法
第一种:对于+
两边都是数值的话,+
就是加法的意思
第二种:对于+
两边至少有一边是字符串的话,+
就是拼接的意思
第三种:自加自减运算
理解:++
运算,表示自增1
。同理,--
运算,表示自减1
,用法与++ 一致。
1)单独使用
变量在单独运算的时候,变量前++和变量后++,是没有区别的。
变量前++ :例如 ++a 。
变量后++ :例如 a++ 。
2)、复合使用
和其他变量放在一起使用或者和输出语句放在一起使用,前++和后++就产生了不同。
变量前++ :变量先自增1,然后再运算。
变量后++ :变量先运算,然后再自增1。
3 、赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理,支持连续赋值
。
扩展赋值运算符: +=、 -=、*=、 /=、%=
+= 将符号
左边的值
和右边的值
进行相加
操作,最后将结果赋值给左边的变量
-= 将符号左边的值
和右边的值
进行相减
操作,最后将结果赋值给左边的变量
*= 将符号
左边的值
和右边的值
进行相乘
操作,最后将结果赋值给左边的变量
/= 将符号
左边的值
和右边的值
进行相除
操作,最后将结果赋值给左边的变量
%= 将符号
左边的值
和右边的值
进行取余
操作,最后将结果赋值给左边的变量
4、 比较(关系)运算符
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 2==3 | false |
!= | 不等于 | 2!=3 | true |
< | 小于 | 2<3 | true |
> | 大于 | 2>3 | false |
<= | 小于等于 | 2<=3 | true |
>= | 大于等于 | 2>=3 | false |
instanceof | 检查是否是类的对象 | "hello" instance of String | true |
注意:
1)比较运算符的结果都是boolean型,也就是要么是true,要么是false,
2)> < >= <= :只适用于基本数据类型(除boolean类型之外)
3)== != :适用于基本数据类型和引用数据类型
4)比较运算符“==
”不能误写成“=
”
5 .逻辑运算符
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | false | false | true | true |
false | false | false | false | false | false | true | false |
逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。
运算符说明:
& 和 &&:表示"且"关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。
| 和 || :表示"或"关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false
! :表示"非"关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。
^ :当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。
理解:异或,追求的是“异”!
逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6 。
区分“&”和“&&”:
相同点:如果符号左边是true,则二者都执行符号右边的操作
不同点:& : 如果符号左边是false,则继续执行符号右边的操作
&& :如果符号左边是false,则不再继续执行符号右边的操作
建议:开发中,推荐使用 &&
区分“|”和“||”:
相同点:如果符号左边是false,则二者都执行符号右边的操作
不同点:| : 如果符号左边是true,则继续执行符号右边的操作
|| :如果符号左边是true,则不再继续执行符号右边的操作
建议:开发中,推荐使用 ||
6、 位运算符(难点、非重点)
运算符 | 运算 | 范例 |
<< | 左移 | 范例 3<<2 = 12 3*2*2 = 12 |
>> | 右移 | 3>>1 = 1 3/2 = 1 |
>>> | 无符号右移 | 3>>> 1 = 1 3/2 =1 |
& | 与运算 | 6&3 = 2 |
| | 或运算 | 6|3 = 7 |
^ | 异或 | 6^3 = 5 |
~ | 取反 | ~6 = 7 |
位运算符的运算过程都是基于二进制的补码运算,补码为正数不变,负数除去符号位 取反+1
(1)左移:<<
运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
【注意】当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位
3<<4 类似于 3*2的4次幂 => 3*16 => 48
3的二进制 0000 0000 0000 0000 0000 0000 0000 0011
3<<4 0000 0000 0000 0000 0000 0000 0000 0011 0000
-3<<4 类似于 -3*2的4次幂 => -3*16 => -48
原码 1000 0000 0000 0000 0000 0000 0000 0011
反码 1111 1111 1111 1111 1111 1111 1111 1100
补码 1111 1111 1111 1111 1111 1111 1111 1101
移动四位 1111 1111 1111 1111 1111 1111 1111 1101 0000
反码 1111 1111 1111 1111 1111 1111 1101 0001
补码 1111 1111 1111 1111 1111 1111 1100 1111
源码 1000 0000 0000 0000 0000 0000 0011 0000
看结果用源码,计算用补码
(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
6 、条件运算符
基本语法
条件运算符格式: (条件表达式)? 表达式1:表达式2
说明:条件表达式是boolean类型的结果,根据boolean的值选择表达式1或表达式2
如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型
开发中,如果既可以使用条件运算符,又可以使用if-else,推荐使用条件运算符。因为执行效率稍高。
7 、运算符优先级
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。上一行中的运算符总是优先于下一行的。
优先级 | 运算符说明 | Java运算符 |
---|---|---|
1 | 括号 | () 、[] 、{} |
2 | 正负号 | + 、- |
3 | 单元运算符 | ++ 、-- 、~ 、! |
4 | 乘法、除法、求余 | * 、/ 、% |
5 | 加法、减法 | + 、- |
6 | 移位运算符 | << 、>> 、>>> |
7 | 关系运算符 | < 、<= 、>= 、> 、instanceof |
8 | 等价运算符 | == 、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | | |
12 | 条件与 | && |
13 | 条件或 | || |
14 | 三元运算符 | ? : |
15 | 赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
16 | 位赋值运算符 | &= 、|= 、<<= 、>>= 、>>>= |
判断 优先级高于 条件或