描述 |
运算符 |
一元后缀 |
expr++ expr-- () [] . ?. |
一元前缀 |
-expr !expr ~expr ++expr --expr |
乘除 |
* / % ~/ |
加减 |
+ - |
位移 |
<< >> >>> |
按位与 |
& |
按位或 |
| |
按位异或 |
^ |
关系和类型测试 |
>= > <= < as is is! |
等于 |
== != |
逻辑与 |
&& |
逻辑或 |
|| |
如果空 |
?? |
条件 |
expr1 ? expr2 : expr3 |
级联 |
.. |
赋值 |
= *= /= ~/= %= += -= <<= >>= &= ^= ??= |
除法和取整
var a= 3/2; // 1.5 java c =1 除法运算
var b= 3~/2; // 1 取整
算数运算符
++ a // a= a+1 表达式的值 a+1
var a = 1;
var b = ++a; //b= a =a+1 先计算后赋值给b
print(b); // 2
b = a++; // 先赋值给b
print(b); // 2
print(a); // 3
类型判断运算符
Operation |
|
as |
类型转化(也用指定类型前缀) |
is |
如果对象是指定类型则返回 true |
is! |
如果是指定类型则返回 false |
?? 如果空 ?.如果不为空
var b;
b??=4; //如果b ==null 那么把4赋值给b
var s;
print(s?.toString()); // null
s = "123"
print(s?.toString()); // 123
逻辑表达式 (短路操作)
&& 逻辑与 || 逻辑或
var a;
if( a!=null && a.toString()){
}else{
// a.toString() 不执行
}
条件表达式
condition ? expr1 : expr2 // 条件 ? 表达式1 :表达式2 如果true,执行表达式1,并返回结果。如果false 执行表达式2 并返回
expr1 ?? expr2 // 表达式1 ?? 表达式2 如果表达式1 为非null 则返回其值,否则执行表达式2 并返回其值
(..)级联运算符
- 级联运算符 (..)可以让你在同一个对象上连续调用多个对象的变量或方法
class User {
String name;
int age;
int sex;
}
User user = User();
user.name = "lilei";
user.age = 18;
user.sex = 0;
user..name="lilei" // 级联运算符
..age = 18
..sex = 0;
?. 条件访问成员
print(user?.name); // 如果user ==null 则返回null 如果user!=null 则返回 user.name