一句话:全部为 值 的运算
二句话🐶优先级:
1. 单目运算 > 双目运算
2. 算术运算 > 逻辑运算
小知识
注意 [赋值就是复制]:变量b = 变量a: 是将变量a的值,拷贝一份给变量b(如果a是引用类型,就拷贝其存储的地址;如果是基本类型,就拷贝其值)!!!!有各自的内存空间!
算术运算符(可以存储数字的基本数据类型都符合)
= 运算符先算右边再去赋值给左边
关系运算符
逻辑运算符
赋值类运算符
扩展赋值类会自动强转!
类似均如下:
连接运算符 +
- 括号优先;
- 自左向右!
- 只有加减号需要加括号,其他算术运算符无所谓!
上节提过的混合运算:
三元运算符
布尔类型表达式 ? 表达式1 : 表达式2
布尔类型表达式为 true: 这个整体返回表达式1执行结果
布尔类型表达式为 false: 这个整体返回表达式2执行结果
print很🐂🐂🐂哦(注意单双引号):
位移运算符
只有右移运算符是绝对安全的:value >> n
左移运算符 | 右移运算符 | 无符号右移 | |
---|---|---|---|
格式 | value << n | value >> n | value >>> n |
解释 | 乘以2的n次方(返回value*2^n) | 除以2的n次方(具体得移编码) | 和右移类似,只是0补符号位 |
例子 | 3 <<2(3为int型) 返回 12 | 11 >>2(11为int型) 返回 3 | 8>>>2(8为整数型) 返回 2 |
内存 | 忽略符号位,0补位 | 符号位不变,0补位 | 忽略符号位,0补位 |
& 按位与, | 按位或 , ^ 按位异或
是一种二进制位的运算
AND (位与&) | OR ( 位或) | XOR ( 位异或^ ) | ~按位取反 |
---|---|---|---|
同位相乘 | 同位最值 | 异或原则 | 单目运算符 |
1 & 1 = 1 | 1 | 1 = 1 | 1 ^ 1 = 0 | 公式:~n = -n-1 |
1 & 0 = 0 | 1 | 0 = 1 | 1 ^ 0 = 1 | 如:~10 = -11 |
0 & 1 = 0 | 0 | 1 = 1 | 0 ^ 1 = 1 | |
0 & 0 = 0 | 0 | 0 = 0 | 0 ^ 0 = 0 |
(hash & 0x7FFFFFFF) <==> 取绝对值
只是这种位运算是在内存中直接进行,不用转换为十进制,所以速度更快!
0x7FFFFFFF = 2147483647