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