操作符
一元后置操作符:expr++ expr-- () [] . ?.
一元前置操作符:-expr !expr ~expr ++expr --expr
乘除运算:* / % ~/
加减运算:+ -
移位运算:<< >>
按位与:&
按位异或:^
按位或:|
关系和类型测试:>= > <= < as is is!
相等:== !=
逻辑与:&&
逻辑或:||
是否为:null??
天健判断(三元运算):expr1 ? expr2 : expr3
级联:..
赋值:= *= /= ~/= %= += -= <<= >>= &= ^=
当您使用操作符时,您将创建表达式,如:a+b,a-b,a*b ,a/b,c ?a:b,a is A
上面的操作符依次排列下来 每一个运算符的优先级都高于排在自己后边的运算符。例如乘除运算中运算符%的优先级高于(并在之前执行)相等判断运算符==,相等(==)判断运算符的优先级又高于逻辑与运算符&&,遵循左到右规则
算术运算符:+加法,-减法,-expr一元减号,也称为否定(与表达式的符号相反),*乘法,/除法,~/取模运算,%取余运算;Dart还支持前缀和后缀递增和递减运算符。
++varvar = var + 1 (表达式的值是 var + 1)
var++var = var + 1 (表达式的值是 var)
--varvar = var – 1 (表达式的值是 var – 1)
var--var = var – 1 (表达式的值是 var)
相等和关系运算符:==相等,!=不等,>大于,<小于,>=大于等于,<=小于等于,要测试两个对象x和y是否代表相同的东西,请使用==操作符,(在需要知道两个对象是否完全相同的情况下,可以使用identical()函数)。
类型测试操作符:as, is, and is!操作符可以方便地在运行时检查类型。as形态转换,is如果对象具有指定的类型,则为True,is!如果对象具有指定的类型,则为False
赋值操作符:可以使用=操作符来赋值。若要仅仅为非空的变量赋值请使用??=操作符。如a??=b;仅仅在a为空的情况下a被赋值b否则a的值不变;
逻辑运算符:可以使用逻辑运算符组合布尔表达式或取反布尔表达式,!expr对!后的表达式结果取反(如果表达式结果为false则表达式前加!使其变为true,反之亦然),||逻辑或,&&逻辑与(且)
位和移位运算:&按位与,|按位或,^按位异或,~expr按位取反,<<左移,>>右移
条件表达式:Dart有两个运算符,可以让你精确地计算那些可能需要if-else语句的表达式:condition ? expr1 : expr2如果条件为真,则计算expr1(并返回其值);否则,计算并返回expr2的值。expr1 ?? expr2如果expr1是非空的,则返回其值;否则,计算并返回expr2的值。当您需要基于布尔表达式的结果选择赋值,请考虑使用 ?: 。如果布尔表达式只想判断值是否为null,请考虑使用 ?? 。
级联表示法 (..):允许您在同一个对象上创建一个操作序列。除了函数调用之外,您还可以访问同一对象上的字段。这通常可以省去创建临时变量的步骤,能使你更为流畅的写代码。注意:严格地说,级联的“..”表示法不是运算符。这只是Dart语法的一部分。
其他运算符:()功能函数表示一个函数调用,[]访问列表引用列表中指定索引处的值,.访问成员表示表达式的属性; ?.根据条件访问成员和(.)相似,但是左边的操作数可以为空;例如: a?.name 从a的表达式中选择name属性,如果a为空则返回null