博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
04_Dart运算符
阅读量:7273 次
发布时间:2019-06-29

本文共 2564 字,大约阅读时间需要 8 分钟。

hot3.png

按照运算符优先级高低进行排序

描述|操作符 --|-- 一元后置操作符| expr++    expr--    ()    []    .    ?. 一元前置操作符| -expr    !expr    ~expr    ++expr    --expr 乘除运算| *    /    %    ~/ 加减运算| +    - 移位运算| <<    >> 按位与| & 按位异或| ^ 按位或| | 关系和类型测试| >=    >    <=    <    as    is    is! 相等| ==    != 逻辑与| && 逻辑或| || 是否为null| ?? 天健判断(三元运算)| expr1 ? expr2 : expr3 级联| .. 赋值| =    *=    /=    ~/=    %=    +=    -=    <<=    >>=    &=    ^=   

当使用操作符后,就变成了表达式。

算术运算符

运算符|说明 --|--

  • | 加法
  • | 减法 -expr | 一元减号,也称为否定
  • | 乘法 / | 除法 ~/ | 取模运算 % | 取余运算
assert(2 + 3 == 5);assert(2 - 3 == -1);assert(2 * 3 == 6);assert(5 / 2 == 2.5); // Result is a doubleassert(5 ~/ 2 == 2); // Result is an intassert(5 % 2 == 1); // Remainderassert('5/2 = ${5 ~/ 2} r ${5 % 2}' == '5/2 = 2 r 1');// Dart还支持前缀和后缀递增和递减运算符。var a, b;a = 0;b = ++a; // Increment a before b gets its value.assert(a == b); // 1 == 1a = 0;b = a++; // Increment a AFTER b gets its value.assert(a != b); // 1 != 0a = 0;b = --a; // Decrement a before b gets its value.assert(a == b); // -1 == -1a = 0;b = a--; // Decrement a AFTER b gets its value.assert(a != b); // -1 != 0

相等和关系运算符

运算符|说明 --|-- ==| 相等 !=| 不等

| 大于 <| 小于 =| 大于等于 <=| 小于等于

类型测试操作符

a, is, and is!操作符可以方便地在运行时检查类型。

运算符|说明 --|-- as| 形态转换 is| 如果对象具有指定的类型,则为True is!| 如果对象具有指定的类型,则为False

赋值运算符

??=操作符仅仅在变量为null时会赋值。未初始化和后来手动赋值为null的情况都会执行此操作赋值。

// Assign value to aa = value;// Assign value to b if b is null; otherwise, b stays the same// 仅仅在b为空的情况下b被赋值value否则b的值不变b ??= value;

复合赋值操作符

如+=将操作与赋值合并。

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

逻辑运算符

可以使用逻辑运算符组合布尔表达式或取反布尔表达式。

运算符 |说明 --|-- !expr | 对!后的表达式结果取反(如果表达式结果为false则表达式前加!使其变为true,反之亦然) || |逻辑或 && |逻辑与(且)

位和移位运算

运算符 |说明 --|-- & |按位与 | |按位或 ^ |按位异或 ~expr |按位取反 << |左移 >> |右移

final value = 0x22;final bitmask = 0x0f;assert((value & bitmask) == 0x02); // ANDassert((value & ~bitmask) == 0x20); // AND NOTassert((value | bitmask) == 0x2f); // ORassert((value ^ bitmask) == 0x2d); // XORassert((value << 4) == 0x220); // Shift leftassert((value >> 4) == 0x02); // Shift right

条件表达式

// 如果条件为真,则计算expr1(并返回其值);否则,计算并返回expr2的值。condition ? expr1 : expr2// 如果expr1是非空的,则返回其值;否则,计算并返回expr2的值。expr1 ?? expr2// 基于布尔表达式的结果选择赋值var visibility = isPublic ? 'public' : 'private';// 布尔表达式只想判断值是否为nullString playerName(String name) => name ?? 'Guest';

级联表示法

.. 允许您在同一个对象上创建一个操作序列。

其它运算符

运算符 |名称| 说明 --|--|-- ()| 功能函数| 表示一个函数调用 []| 访问列表| 引用列表中指定索引处的值 · |访问成员| 表示表达式的属性;例如:foo.bar从表达式foo中选择属性bar,如果foo为null,会抛出异常 ?. |根据条件访问成员| 和(.)相似,但是左边的操作数可以为空;例如: foo?.bar 从foo的表达式中选择bar属性,如果foo为空则返回null

转载于:https://my.oschina.net/wecnlove/blog/3011212

你可能感兴趣的文章
mysqldump: Couldn’t execute 错误
查看>>
给新手的Oracle学习路线
查看>>
超级全的H3C交换机配置命令
查看>>
Supesite 6.0 $_SGLOBAL[supe_username_show] 调用显示GUEST
查看>>
使用Powershell远程管理Windows Server(WinRM)
查看>>
学习日志---递归、非递归,迷宫问题
查看>>
c# 线程状态及转换
查看>>
windows批处理命令FOR的巧用
查看>>
Android Task 任务栈
查看>>
python实用程序-HTTP服务调用系统命令(带白名单)
查看>>
H3C S5500-28F-EI 清除配置
查看>>
load average
查看>>
浏览器标签栏logo添加
查看>>
setjmp()/longjmp()的使用方法
查看>>
SQL Server 2008R2的各种问题及解决方案
查看>>
为什么字符串正则里有好多的反斜杠
查看>>
A.Eugeny and Array
查看>>
rzchecktree实现单选以及隐藏选择框
查看>>
amazon 面经3
查看>>
hibernate主键详细介绍
查看>>