运算符(Operators)
Dart 提供了丰富的内置运算符,可以用于算术、比较、逻辑操作等。 运算符主要分为以下几类:
算术运算符
运算符 | 含义 | 示例 |
---|---|---|
+ | 加法 | 2 + 3 == 5 |
- | 减法 | 2 - 3 == -1 |
- | 一元减号(取负数) | -(3) == -3 |
* | 乘法 | 2 * 3 == 6 |
/ | 除法,结果为 double | 5 / 2 == 2.5 |
~/ | 除法取整 | 5 ~/ 2 == 2 |
% | 取余数 | 5 % 2 == 1 |
自增与自减运算符
运算符 | 含义 | 示例 |
---|---|---|
++var | 先自增后使用 | var a = 0; print(++a); // 输出 1 |
var++ | 先使用后自增 | var a = 0; print(a++); // 输出 0, a 变为 1 |
--var | 先自减后使用 | var a = 2; print(--a); // 输出 1 |
var-- | 先使用后自减 | var a = 2; print(a--); // 输出 2, a 变为 1 |
相等与关系运算符
运算符 | 含义 | 示例 |
---|---|---|
== | 相等 | 2 == 2 为 true |
!= | 不等 | 2 != 3 为 true |
> | 大于 | 3 > 2 |
< | 小于 | 2 < 3 |
>= | 大于等于 | 3 >= 3 |
<= | 小于等于 | 2 <= 3 |
类型判断运算符
运算符 | 含义 | 示例 |
---|---|---|
as | 类型转换(强制转换) | (emp as Person) |
is | 判断是否为某类型 | emp is Person |
is! | 判断是否不是某类型 | emp is! Person |
逻辑运算符
运算符 | 含义 | 示例 | ||||
---|---|---|---|---|---|---|
! | 取反 | !true == false | ||||
&& | 逻辑与 | true && false == false | ||||
` | ` | 逻辑或 | `true | false == true` |
按位与移位运算符
运算符 | 含义 | 示例 | ||
---|---|---|---|---|
& | 按位与 | 5 & 3 == 1 | ||
` | ` | 按位或 | `5 | 3 == 7` |
^ | 按位异或 | 5 ^ 3 == 6 | ||
~expr | 按位取反 | ~5 == -6 | ||
<< | 左移 | 5 << 1 == 10 | ||
>> | 右移 | 5 >> 1 == 2 | ||
>>> | 无符号右移 | -1 >>> 2 结果为一个大整数 |
赋值运算符
运算符 | 示例 | 等价于 | |||
---|---|---|---|---|---|
= | a = b | 把 b 的值赋给 a | |||
+= | a += b | a = a + b | |||
-= | a -= b | a = a - b | |||
*= | a *= b | a = a * b | |||
/= | a /= b | a = a / b | |||
~/= | a ~/= b | a = a ~/ b | |||
%= | a %= b | a = a % b | |||
<<= | a <<= b | a = a << b | |||
>>= | a >>= b | a = a >> b | |||
&= | a &= b | a = a & b | |||
^= | a ^= b | a = a ^ b | |||
` | =` | `a | = b` | `a = a | b` |
条件运算符
条件表达式:
dartcondition ? expr1 : expr2
若
condition
为true
,返回expr1
;否则返回expr2
。空值判断运算符:
dartexpr1 ?? expr2
若
expr1
不为null
,返回expr1
;否则返回expr2
。
级联运算符(..)
允许在同一个对象上连续调用多个方法或访问多个属性:
dart
var sb = StringBuffer()
..write('Hello')
..write(' Dart');
等价于:
dart
var sb = StringBuffer();
sb.write('Hello');
sb.write(' Dart');
其他运算符
运算符 | 含义 |
---|---|
() | 函数调用 |
[] | 下标访问 |
?[] | 空安全下标访问 |
. | 成员访问 |
?. | 空安全成员访问 |