Dart基础-运算符

运算符

dart定义的运算符如下所示

描述运算符
一元后缀 expr++expr–()[].
一元前缀 -expr!expr~expr++expr–expr
乘法 */%~/
加法 +-
移位 <<>>
按位与&
按位或|
关系和类型判断 >=><=<asisis!
相等 ==!=
逻辑与&&
逻辑或||
条件式expr1 ? expr2 : expr3
级联..
赋值 ==/=~/=%=+=-=<<=>>=&=^= 、 |=

下面是使用运算符创建表达式的例子

a++
a + b
a = b
a == b
a ? b : c
a is T

在上面的所有运算符中,前排的优先级高于后排的,例如”%“ > ”==“ > ”&&“

//括号能改变优先级
if ((n % i == 0) && (d % i == 0))
//效果跟上面一样
if (n % i == 0 && d % i == 0)

算术运算符

dart常用的算术运算符如下

运算符意义
+加法
-减法
-expr取反,或称否定(反向表达式)
*乘法
/除法
~/整除
%模运算,取整除后的余

写个例子

assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5);
assert(5 ~/ 2 == 2);
assert(5 % 2 == 1);

print('5除2等于${5~/2}余${5%2}');

dart还可以用两个前缀和后缀进行自增和自减运算

运算符意义
++varvar = var + 1(执行前加1)
var++var = var + 1(执行后加1)
–varvar = var - 1(执行前减1)
var–var = var - 1(执行后减1)

写个例子

var a, b;

a = 0;
b = ++a;
assert(a == b);

a = 0;
b = a++;
assert(a != b);

a = 0;
b = --a;
assert(a == b);

a = 0;
b = a--;
assert(a != b);

相等与关系运算符

dart常用的相等与关系运算符如下

运算符意义
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

判断两个对象是否相等,使用 = 运算符,少数情况下,你想知道两个对象是否完全相等,可以使用 identical() 方法

assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);

类型运算符

用as、is和is!可以很方便的在执行时检查
用 obj is T 这个语法可以判断obj是否实现了T

if (emp is Person) {
  emp.firstName = 'Bob';
}

你也可以使用as运算符检查

(emp as Person).firstName = 'Bob';

还有is!运算符,它与is反着来

赋值运算符

赋值用 = 运算符,如果在前面加上其他运算符比如 += ,就可以组成复合赋值运算符

=    –=    /=    %=    >>=    ^=
+=    *=    ~/=    <<=    &=    |=

复合赋值运算符的语法说明是 a op= b 等于 a = a op b

var a = 2;
a *= 3;
assert(a == 6);

逻辑运算符

dart常用的逻辑运算符如下

运算符意义
!expr反转表达式,假为真,反之亦然
||逻辑或
&&逻辑与

写个例子

if (!done && (col == 0 || col == 3)) {
  // ...
}

按位和位移运算符

你可以使用按位和位移运算符操纵一个数字

运算符意义
&
|
^异或
~expr按位补码(0成为1;1变成0)
<<左移位
>>右移位

写个例子

final value = 0x22;
final bitmask = 0x0f;

assert((value & bitmask) == 0x02);
assert((value & ~bitmask) == 0x20);
assert((value | bitmask) == 0x2f);
assert((value ^ bitmask) == 0x2d);
assert((value << 4) == 0x220);
assert((value >> 4) == 0x02);

其它运算符

剩下的部分运算符

运算符名称意义
()函数应用表示一个函数调用
[]访问列表在列表中索引指定值
expr1 ? expr2 : expr3条件式如果expr1为真,执行expr2,否则执行expr3
.成员访问选择对象的成员,例如foo.bar
..级联对对象的成员执行多个操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值