Dart语言学习 - 16 操作符
本节目标
- 优先级
- 算术操作符
- 相等相关的操作符
- 类型判定操作符
- 赋值操作符
- 逻辑操作符
- 位和移位操作符
- 条件表达式
- 级联操作符
环境
操作符表
| 描述 |
操作符 |
| 后缀操作 |
expr++ expr– () [] . ?. |
| 前缀操作 |
-expr !expr ~expr ++expr –expr |
| 乘除 |
* / % ~/ |
| 加减 |
+ - |
| 位移 |
<< >> |
| 按位与 |
& |
| 按位异或 |
^ |
| 按位或 |
\ |
|
| 类型操作 |
>= > <= < as is is! |
| 相等 |
== != |
| 逻辑与 |
&& |
| 逻辑或 |
\ |
\ |
|
| 是为为空 |
?? |
| 三目运算 |
expr1 ? expr2 : expr3 |
| 级联 |
.. |
| 赋值 |
= *= /= ~/= %= += -= <<= >>= &= ^= \ |
= ??= |
优先级顺序 上面左边 优先级高于 右边下面
1 2 3
| if(x == 1 && y == 2){ ... }
|
算术操作符
| 操作符 |
解释 |
| + |
加号 |
| – |
减号 |
| -expr |
负号 |
| * |
乘号 |
| / |
除号 |
| ~/ |
除号,但是返回值为整数 |
| % |
取模 |
1 2 3
| print(5/2); print(5~/2); print(5 % 2);
|
相等相关的操作符
| 操作符 |
解释 |
| == |
相等 |
| != |
不等 |
| > |
大于 |
| < |
小于 |
| >= |
大于等于 |
| <= |
小于等于 |
类型判定操作符
| 操作符 |
解释 |
| as |
类型转换 |
| is |
如果对象是指定的类型返回 True |
| is! |
如果对象是指定的类型返回 False |
1 2 3 4 5 6
| int a = 123; String b = 'ducafecat'; String c = 'abc'; print(a as Object); print(b is String); print(c is! String);
|
条件表达式
| 操作符 |
解释 |
| condition ? expr1 : expr2 |
如果 condition 是 true,执行 expr1 (并返回执行的结果); 否则执行 expr2 并返回其结果。 |
| expr1 ?? expr2 |
如果 expr1 是 non-null,返回其值; 否则执行 expr2 并返回其结果。 |
1 2 3 4 5 6 7
| bool isFinish = true; String txtVal = isFinish ? 'yes' : 'no';
bool isFinish; isFinish = isFinish ?? false; or isFinish ??= false;
|
位和移位操作符
| 操作符 |
解释 |
| & |
逻辑与 |
|
逻辑或 |
| ^ |
逻辑异或 |
| ~expr |
取反 |
| << |
左移 |
| >> |
右移 |
级联操作符
| 操作符 |
解释 |
| .. |
可以在同一个对象上 连续调用多个函数以及访问成员变量。 |
1 2 3 4 5 6
| StringBuffer sb = new StringBuffer(); sb ..write('hello') ..write('word') ..write('\n') ..writeln('doucafecat');
|
其他操作符
| 操作符 |
解释 |
| () |
使用方法 代表调用一个方法 |
| [] |
访问 List 访问 list 中特定位置的元素 |
| . |
访问 Member 访问元素,例如 foo.bar 代表访问 foo 的 bar 成员 |
| ?. |
条件成员访问 和 . 类似,但是左边的操作对象不能为 null,例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员 |
1 2
| String a; print(a?.length);
|
代码
参考
© 猫哥
https://ducafecat.tech
邮箱 ducafecat@gmail.com / 微信 ducafecat / 留言板 disqus