js-运算符:https://www.yuque.com/zhuchaoyang/wrif6k/iixc9x
算数运算符
+
、-
、*
、/
加、减、乘、除%
、~/
模(取余)、取整(取出小数点后边) ```dart print(1 + 2); //3 print(1 - 2); //-1 print(1 * 2); //2 print(4 / 2); //2.0 浮点数
print(10 % 7); //3 整型 print(8 ~/ 3); //2 整型
<a name="tCj4j"></a>
# 比较(关系)运算符
- `==` 、`!=` 、`<` 、`>` 、`<=` 、`>=`
```dart
print(2 == 2); //true
print(2 != 2); //false
print(2 < 3); //true
print(2 > 3); //false
print(2 <= 2); //true
print(2 >= 3); //false
// print('a' >= 'b'); //报错
print(1 == '1'); //false
print(0 == false); //false
print(null == null); //true
print([] == []); //false
print({} == {}); //false
逻辑运算符
||
、&&
、!
或、且、非
// print(1 || 2); //报错
print((3 > 1) || (3 < -1)); //true
print((3 > 0) && (3 < 6)); //true
print(!true); //false
赋值运算符
=
、+=
、-=
、*=
、/=
、%=
、~/
var a = 1; print(a); //1
int c1 = 10; print(c1 += 1); //11
int c2 = 10; print(c2 -= 1); //9
int c3 = 10; print(c3 *= 2); //20
int c4 = 10; print(c4 %= 3); //1
int c5 = 10; print(c5 ~/= 3); //3
// int c6 = 10; print(c6 /= 1); //报错 因为除法得到的值是double
double c7 = 10; print(c7 /= 2); //5.0
??
、??=
判断对象是否为null,是null就赋值后面参数
print(null ?? 1); //1
var b1 = 1;
b1 ??= 2; //等同于 b1 = b1 ?? 2;
print(b1); //1
var b2;
b2 ??= 2;
print(b2); //2
var b3 = null;
b3 ??= 2;
print(b3); //2
递增++、递减—
var a = 10;
// ++a; a++; //把a累加一个1,相当于a = a+1
// --a; a--; //把a累减一个1,相当于a = a-1
var a1 = 10, a2 = 10;
print('${++a1}, ${a2++}'); //11, 10
print('${a1}, ${a2}'); //11, 11
前置和后置的区别: 在没有赋值操作,前置和后置是一样的。 但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。
条件表达式
其实就是三元运算符
语法:条件 ? 成立执行 : 不成立执行
var a = 5;
var b = a > 1 ? true : false;
print(b); //true
// 如果三元运算符中的某一部分不需要任何处理,可以使用 null
var c = a > 10 ? true : null;
print(c); //null
//如果赋值是基于判定是否为null,应考虑使用 ??
var n = 1;
var m = n ?? 2;
print(m); //1
?
条件成员访问 和 .
类似,但是左边的操作对象不能为 null,
例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员
var s1 = 'a';
print(s1.length); //1
print(s1?.length); //1
var s2;
// print(s2.length); //报错
print(s2?.length); //null
is
、is!
、as
类型判断、类型转换
is
判断是否是某个类型,返回true或者false。as
是类型转换,其相当于 :先检测 其是不是,然后再调用的一种简写。但是还不是完全一致,当不是的时候,as 会抛出exception。
print(1 is int); //true
print(1 is! int); //false
var m1 = {};
if (m1 is Map) {
m1['age'] = 18;
}
print(m1); //{age: 18}
// 简写为:
var m2 = {};
(m2 as Map)['age'] = 18;
print(m2); //{age: 18}