- 算术运算符
+
:加,例如3 + 4
,结果为7
。-
:减,例如5 - 2
,结果为3
。*
:乘,例如2 * 3
,结果为6
。/
:除,例如10 / 3
,结果为3.3333333333333335
。%
:取模,例如10 % 3
,结果为1
。++
:自增,例如var a = 1; a++;
,此时 a 的值为2
。--
:自减,例如var b = 2; b--;
,此时 b 的值为1
。
- 关系运算符
==
:等于,例如1 == 1
,结果为true
。!=
:不等于,例如1 != 2
,结果为true
。>
:大于,例如3 > 2
,结果为true
。<
:小于,例如2 < 3
,结果为true
。>=
:大于等于,例如3 >= 3
,结果为true
。<=
:小于等于,例如2 <= 3
,结果为true
。
- 逻辑运算符
&&
:逻辑与,例如true && false
,结果为false
。||
:逻辑或,例如true || false
,结果为true
。!
:逻辑非,例如!true
,结果为false
。
- 位运算符
&
:按位与,例如3 & 5
,结果为1
。|
:按位或,例如3 | 5
,结果为7
。^
:按位异或,例如3 ^ 5
,结果为6
。~
:按位取反,例如~3
,结果为-4
。<<
:左移,例如3 << 2
,结果为12
。>>
:右移,例如10 >> 1
,结果为5
。
- 赋值运算符
=
:简单赋值,例如var a = 1;
。+=
:加后赋值,例如var a = 1; a += 2;
,此时 a 的值为3
。-=
:减后赋值,例如var b = 2; b -= 1;
,此时 b 的值为1
。*=
:乘后赋值,例如var c = 3; c *= 2;
,此时 c 的值为6
。/=
:除后赋值,例如var d = 10; d /= 3;
,此时 d 的值为3.3333333333333335
。
- 条件运算符
expr1 ? expr2 : expr3
:三目运算符,例如var x = 3; var y = x < 5 ? "x 小于 5" : "x 大于等于 5";
,此时 y 的值为"x 小于 5"
。
- 位移运算符
Dart 提供了两个对应类型的位移运算符,如下:
>>
右移运算符<<
左移运算符
下面是例子:
void main() {
int a = 9;
int b = -9;
int c = 2;
print(a >> c);//2
print(b >> c);//-3
print(a << c);//36
print(b << c);//-36
}
- 闭合运算符
Dart 提供了一些闭合运算符,例如:
(expr)
:括号运算符,用于改变运算优先级。
- 其他运算符
is
:类型判断运算符,例如if (obj is String) { }
。as
:类型转换运算符,例如var str = obj as String;
。
10.补充知识点:
在Dart中,整数相除使用的是普通的除号/
,即使两个操作数都是整数类型,对两个整数相除也会得到一个double类型的结果。如果你想在两个整数相除后只保留整数部分,可以使用除法运算符结合取整函数来实现。比如可以使用以下代码来实现两个整数相除后自动取整的效果:
int result = 5 ~/ 2; // 输出2,相当于执行整除操作
其中~/
是Dart中的整除运算符,它会将结果取整为整数。
需要注意的是:
如果被除数或除数是浮点数,使用整数相除运算符 ~/ 会先将浮点数转换为整数再进行整数相除运算,此时会截断浮点数的小数部分,因此结果可能与预期不符。在这种情况下,可以使用 Dart 中的取整函数 toInt() 来实现正确的效果。例如:
double a = 10.0;
double b = 3.0;
int c = (a / b).toInt(); // 取整
print(c); // 输出结果为 3
在上述例子中,变量 a 和 b 分别被赋值为 10.0 和 3.0,先使用除法运算符 / 进行浮点数相除运算,然后使用取整函数 toInt() 将结果转换为整数并赋值给变量 c,最后输出变量 c 的值为 3,保留了除法运算的整数部分。