运算符
2 算术运算
知道有这几种运算符就行,代码就省去
符号 | 含义 | 例子 |
---|---|---|
++ | 自增 | a++ |
- - | 自减 | a- - |
- | 取反 | -a |
+ | 加法 | a+b |
- | 减法 | a-b |
* | 乘法 | a*b |
/ | 除法 | a/b |
/% | 取余 | a%b |
+= | 加赋值 | a+=b和a=a+b一样 |
-= | 减赋值 | a+=b |
*= | 乘赋值 | a*=b |
/= | 除赋值 | a/=b |
%= | 取余赋值 | a%=b |
3 关系运算
比较简单省去代码
符号 | 含义 | 例子 |
---|---|---|
== | 判断内容是否相等 | a==b 等于java中equals |
!== | 判断内容是否不相等 | a!==b |
> | l两个数比较 | a>b |
>= | l两个数比较 | a>=b |
< | l两个数比较 | a<b |
<= | l两个数比较 | a<=b |
=== | 比较两个引用对象是否相同 | a===b 想当于java中的 == |
! === | 比较两个引用对象是否相同 | a!===b |
4 逻辑运算
符号 | 含义 | 例子 |
---|---|---|
! | 取反 | a=true !a=false |
&& | 逻辑与 | a=true ,b=true a&&b=true 否则为false |
|| | 逻辑与 | a=fasle ,b=false a||b=false 否则为true |
5 位运算符
val a = 00110010 //十进制50 ①
val b = 01011110 //十进制94
运算符 | 含义 | 例子 |
---|---|---|
inv | 按位取反 | a.inv() (a+1)取负值 -00110011 |
and | 位与 | a and b 结果 00010010 |
or | 位或 | a or b 结果 01111110 |
xor | 位异或 | a xor b 结果 01101100 |
shr | 有符号右移 | a shr (2) 无符号右移 结果 00001100 |
shl | 有符号左移 | a shr (2) 无符号右移 结果 11001000 |
ushr | 无符号右移 | a ushr (2) 无符号右移 结果 00001100 负数影响比较大 比如 -1100 右移2位 |
负数无符号右移和有符号右移的计算过程
(1)计算 -12 和的有符号右移 2位
-12的 原码 10000000
00000000
00000000
00001100
-12 补码 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 11110100
右移 2位高位补1
11111111 11111111 11111111 11111101
保留符号位按位取反 在+1
10000000 00000000 00000000 00000011
以上就是-12 有符号位 右移2位的二进制 转10进制位 -3
(2)计算 -12 和的无符号右移 2位
-12的 原码 10000000
00000000
00000000
00001100
-12 补码 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 11110100
右移2位高位补 0
00111111 11111111 11111111 11111101
以上就是-12 有符号位 右移2位的二进制 转10进制位 1073741821
6 其他算符
符号 | 含义 |
---|---|
: | 用于变量或常量类型声明,以及声明继承父类和实现接口 |
() | 起到改变表达式运算顺序的作用,它的优先级最高 |
[] | 索引访问运算符号 |
? | 标识一个可空类型。 |
?. | 调用非空类型的函数或属性 |
?: | 空值合并运算符。 |
… | 区间范围 |