前言
- 在 Dart 中,操作符(Operators)是用来操作变量和值的符号
- Dart 的操作符和 JavaScript 的操作符有很多相似之处
- 但也存在一些差异, 本文中我会分别列出常见的操作符类型
- 并提供 Dart 和 JavaScript 的对比代码(不一定都会进行对比)
赋值操作符
- 赋值操作符用来给变量赋值
操作符 | 描述 | 例子 |
---|---|---|
= | 简单赋值操作符 | a = b |
??= | 如果变量为 null 则赋值 | 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 |
- Dart 中的赋值操作符和 JavaScript 中的赋值操作符是一样的,
- 但是 Dart 中有特殊的赋值操作符
??=
与~=
, 本文中我会分别进行介绍
示例代码,大家直接复制到在线网站运行即可:
代码语言:javascript复制void main() {
// 基本赋值 a = b = c = 10;
var a = 10;
print(a);
print("=================");
// 相当于 a = a 5;, 也就是加法赋值
a = 5;
print(a);
print("=================");
// ??= 如果变量为 null 则赋值, 否则不赋值
var b;
b ??= 10;
print(b);
print("=================");
// ??= 如果变量为 null 则赋值, 否则不赋值
var c = 20;
c ??= 10;
print(c);
print("=================");
// = 相当于 a = a 5;, 也就是加法赋值
var d = 30;
d = 5;
print(d);
print("=================");
// -= 相当于 a = a - 5;, 也就是减法赋值
var e = 40;
e -= 5;
print(e);
print("=================");
// *= 相当于 a = a * 5;, 也就是乘法赋值
var f = 50;
f *= 5;
print(f);
print("=================");
// /= 相当于 a = a / 5;, 也就是除法赋值
double g = 60;
g /= 5;
print(g);
print("=================");
// ~/= 相当于 a = a ~/ 5;, 也就是整数除法赋值
var h = 70;
h ~/= 6;
print(h);
print("=================");
// %= 相当于 a = a % 5;, 也就是取余赋值
var i = 80;
i %= 5;
print(i);
}
运行结果:
代码语言:javascript复制10
=================
15
=================
10
=================
20
=================
35
=================
35
=================
250
=================
12
=================
11
=================
0
算术操作符
- 算术操作符用来执行算术运算
- Dart 中的算术操作符和 JavaScript 中的算术操作符是一样的
- 但是 Dart 中有整数除法操作符
~/
- JavaScript 没有整数除法操作符
操作符 | 描述 | 例子 |
---|---|---|
| 加法 | a b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
~/ | 整数除法 | a ~/ b |
% | 取余 | a % b |
| 自增 | a |
-- | 自减 | a-- |
示例代码:
代码语言:javascript复制void main() {
// 加法, 两个数字相加, 或者字符串拼接
var a = 10;
var b = 20;
print(a b);
print("=================");
// - 减法, 两个数字相减
var c = 30;
var d = 20;
print(c - d);
print("=================");
// * 乘法, 两个数字相乘
var e = 10;
var f = 20;
print(e * f);
print("=================");
// / 除法, 两个数字相除
var g = 30;
var h = 20;
print(g / h);
print("=================");
// ~/ 整数除法, 两个数字相除, 取整数部分
var i = 30;
var j = 20;
print(i ~/ j);
print("=================");
// % 取余, 两个数字相除, 取余数部分
var k = 30;
var l = 20;
print(k % l);
print("=================");
// 自增, 数字自增 1
var m = 30;
m ;
print(m);
print("=================");
// -- 自减, 数字自减 1
var n = 30;
n--;
print(n);
}
运行结果:
代码语言:javascript复制30
=================
10
=================
200
=================
1.5
=================
1
=================
10
=================
31
=================
29
关系操作符
- 关系操作符用来比较两个值
- Dart 中的关系操作符和 JavaScript 中的关系操作符是一样的
- 但是 Dart 中有特殊的关系操作符
is
和is!
, 本文中我会分别进行介绍
操作符 | 描述 | 例子 |
---|---|---|
== | 相等 | a == b |
!= | 不相等 | a != b |
大于 | a > b | |
< | 小于 | a < b |
| 大于等于 | a >= b |
<= | 小于等于 | a <= b |
is | 类型判断 | a is b |
is! | 类型判断 | a is! b |
示例代码:
代码语言:javascript复制void main() {
// == 相等, 判断两个值是否相等
var a = 10;
var b = 20;
print(a == b);
print("=================");
// != 不相等, 判断两个值是否不相等
var c = 10;
var d = 20;
print(c != d);
print("=================");
// > 大于, 判断左边的值是否大于右边的值
var e = 10;
var f = 20;
print(e > f);
print("=================");
// < 小于, 判断左边的值是否小于右边的值
var g = 10;
var h = 20;
print(g < h);
print("=================");
// >= 大于等于, 判断左边的值是否大于等于右边的值
var i = 10;
var j = 20;
print(i >= j);
print("=================");
// <= 小于等于, 判断左边的值是否小于等于右边的值
var k = 10;
var l = 20;
print(k <= l);
print("=================");
// is 类型判断, 判断左边的值是否是右边的类型
var m = 10;
print(m is int);
print("=================");
// is! 类型判断, 判断左边的值是否不是右边的类型,is! 与 is 的区别在于 is! 是取反
double n = 10.2;
print(n is! int);
}
运行结果:
代码语言:javascript复制false
=================
true
=================
false
=================
true
=================
false
=================
true
=================
true
=================
true
逻辑操作符
- 逻辑操作符用来执行逻辑运算
- Dart 中的逻辑操作符和 JavaScript 中的逻辑操作符是一样的
- 但是 Dart 中有特殊的逻辑操作符
??
, 本文中我会进行介绍
操作符 | 描述 | 例子 |
---|---|---|
&& | 逻辑与 | a && b |
|| | 逻辑或 | a || b |
! | 逻辑非 | !a |
?? | 如果变量为 null 则赋值 | a ?? b |
示例代码:
代码语言:javascript复制void main() {
// && 逻辑与, 判断两个值是否都为 true
var a = true;
var b = false;
print(a && b);
print("=================");
// || 逻辑或, 判断两个值是否有一个为 true
var c = true;
var d = false;
print(c || d);
print("=================");
// ! 逻辑非, 就是取反
var e = true;
print(!e);
print("=================");
// ?? 如果变量为 null 则赋值
var f;
var g = 10;
print(f ?? g);
print("=================");
}
运行结果:
代码语言:javascript复制false
=================
true
=================
false
=================
10
=================
20
条件操作符
- 条件操作符用来执行条件运算
- Dart 中的条件操作符和 JavaScript 中的条件操作符是一样的
操作符 | 描述 | 例子 |
---|---|---|
? : | 三元运算符 | a ? b : c |
.. | 级联操作符 | a..b |
示例代码:
代码语言:javascript复制void main() {
// ? : 三元运算符, 如果 a 为 true 则返回 b, 否则返回 c
var a = true;
var b = 10;
var c = 20;
print(a ? b : c);
print("=================");
// .. 级联操作符, 用来操作对象的属性或者方法
var list = [];
list..add(1)..add(2)..add(3);
print(list);
}
运行结果:
代码语言:javascript复制10
=================
[1, 2, 3]
最后
我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!
本期结束咱们下次再见