版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxl517116279/article/details/88430400
操作符表
描述 | 操作符 |
---|---|
后缀操作 | expr++ expr-- () [] . ?. |
前缀操作 | -expr !expr ~expr ++expr --expr |
乘除 | * / % ~/ |
加减 | + - |
位移 | << >> |
按位与 | & |
按位异或 | ^ |
按位或 | \ |
类型操作 | >= > <= < as is is! |
相等 | == != |
逻辑与 | && |
逻辑或 | \\ |
是否为空 | ?? |
三目运算 | expr1 ? expr2 : expr3 |
级联 | .. |
赋值 | = *= /= ~/= %= += -= <<= >>= &= ^= \= ??= |
优先级顺序
上面左边
优先级高于右边下面
?.
判断对象是否为空,为空则输出null,不会报空指针
String s;
print(s.length); //报错
print(s?.length); //null
~/
先执行除法,然后取整
print(1 / 2); // 0.5
print(1 ~/ 2); // 0
as is is!
as 类型转换
is 类型判断
is!与is相反
??
判断对象是否为null,是null就赋值后面参数
bool b;
b = b ?? false;
b ??= false;//与上面相同意思
算术操作符
操作符 | 解释 |
---|---|
+ | 加号 |
– | 减号 |
-expr | 负号 |
* | 乘号 |
/ | 除号 |
~/ | 除号,但是返回值为整数 |
% | 取模 |
相等相关的操作符
操作符 | 解释 |
---|---|
== | 相等 |
!= | 不等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
类型判定操作符
操作符 | 解释 |
---|---|
as | 类型转换 |
is | 如果对象是指定的类型返回 True |
is! | 如果对象是指定的类型返回 False |
条件表达式
操作符 | 解释 |
---|---|
condition ? expr1 : expr2 | 如果 condition 是 true,执行 expr1 (并返回执行的结果); 否则执行 expr2 并返回其结果。 |
expr1 ?? expr2 | 如果 expr1 是 non-null,返回其值; 否则执行 expr2 并返回其结果。 |
位和移位操作符
操作符 | 解释 |
---|---|
& | 逻辑与 |
逻辑或 | |
^ | 逻辑异或 |
~expr | 取反 |
<< | 左移 |
>> | 右移 |
级联操作符
操作符 | 解释 |
---|---|
.. | 可以在同一个对象上 连续调用多个函数以及访问成员变量。 |
StringBuffer sb = new StringBuffer();
sb
..write('hello')
..write('world')
..write('\n')
..writeln('haha');
其他操作符
操作符 | 解释 |
---|---|
() | 使用方法 代表调用一个方法 |
[] | 访问 List 访问 list 中特定位置的元素 |
. | 访问 Member 访问元素,例如 foo.bar 代表访问 foo 的 bar 成员 |
?. | 条件成员访问 和 . 类似,但是左边的操作对象不能为 null,例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员 |