3.3.1 算数运算符
运算符 |
说明 |
范例 |
结果 |
+ |
加(或正号)(或字符串连接符) |
1 + 6 |
7 |
- |
减 |
1 - 6 |
-5 |
* |
乘 |
2 * 3 |
6 |
/ |
除 |
4 / 2 |
2 |
% |
取余 |
3 % 2 |
1 |
📝 说明
- 对于除号,整数除和小数除有区别
- 对于取余,等价于 a % b = a - a / b * b
- Scala 没有 ++/— 操作,只能通过 +=/-= 实现
3.3.2 关系运算符
关系运算符就是比较两个数组,结果为 Boolean 类型
运算符 |
说明 |
范例 |
结果 |
== |
相等于 |
3 == 3 |
true |
!= |
不等于 |
3 != 3 |
false |
>= |
大于等于 |
2 >= 3 |
false |
<= |
小于等于 |
2 <= 3 |
true |
> |
大于 |
2 > 3 |
false |
< |
小于 |
2 < 3 |
true |
📝 说明
- “ = ”属于赋值运算符,不要和“==”混肴
- 两个浮点数进行比较时,应该保证数据类型一致
3.3.3 位运算符
| 位运算符 | 说明 | 范例 |
| :—-: | :—-: | :—-: |
| & | 按位与运算 | 9 & 3 → 1 |
| | | 按位或运算 | 9 | 3 → 11 |
| ^ | 按位异或运算 | 9 ^ 3 → 10 |
| ~ | 按位取反运算 | ~9 → -10· |
| << | 左移运算 | 9 << 3 → 72 |
| >> | 右移运算 | -9 >> 3 → -2 |
| >>> | 无符号右移运算 | -9 >>> 3 → 536870910 |
3.3.4 逻辑运算符
逻辑运算符用于连接多个条件,结果为 Boolean 类型
运算符 |
说明 |
范例 |
结果 |
&& |
逻辑与(全真才为真) |
3 == 3 && 2 > 3 |
false |
|| |
逻辑或(有真就为真) |
3 != 3 || 2 > 3 |
false |
! |
逻辑非(取反,真假颠倒) |
!(2 >= 3) |
true |
3.3.5 赋值运算符
运算符 |
说明 |
范例 |
= |
右边的值赋给左边 |
var age = 22 |
+= |
相加后赋值 |
a += 2 → a = a + 2 |
-= |
相减后赋值 |
a -= 2 → a = a - 2 |
*= |
相乘后赋值 |
a = 2 → a = a 2 |
/= |
相除后赋值 |
a /= 2 → a = a / 2 |
%= |
取余后赋值 |
a %= 2 → a = a % 2 |
<<= |
左移后赋值 |
a <<= 2 → a = a << 2 |
>>= |
右移后赋值 |
a >>= 2 → a = a >> 2 |
&= |
按位与后赋值 |
a &= 2 → a = a & 2 |
^= |
按位异或后赋值 |
a ^= 2 → a = a ^ 2 |
|= |
按位或后赋值 |
a |= 2 → a = a | 2 |
📝 说明
- 赋值运算以及“ !~ ”运算的运算顺序都是从右往左
- 运算符左边是变量,右边可以是表达式、变量、常量值
- Scala 中不支持三目运算符,使用 if-else 方式实现
3.3.6 运算符优先级
运算符的优先级从高到低的顺序如下表格:
分类 |
运算符 |
关联 |
Postfix |
() [] |
从左到右 |
Unary |
! ~ |
从右到左 |
Multiplicative |
* / % |
从左到右 |
Additive |
+ - |
从左到右 |
Shift |
>> >>> << |
从左到右 |
Relational |
> >= < <= |
从左到右 |
Equality |
== != |
从左到右 |
Bitwise AND |
& |
从左到右 |
Bitwise XOR |
^ |
从左到右 |
Bitwise OR |
| |
从左到右 |
Logical AND |
&& |
从左到右 |
Logical OR |
|| |
从左到右 |
Assignment |
= += -= *= /= %= >>= <<= &= ^= |= |
从右到左 |
Comma |
, |
从左到右 |