轻松掌握Dart运算符
现代JavaScript高级小册
深入浅出Dart
现代TypeScript高级小册
运算符
运算符是一种特殊的符号,用于检查,更改或结合值。Dart语言中的运算符主要包括以下几类:
1. 算术运算符
算术运算符用于进行数学运算。Dart中的算术运算符有 +
(加),-
(减),*
(乘),/
(除),%
(取余)以及~/
(取整)。
var a = 10;
var b = 2;
print(a + b); // 输出:12
print(a - b); // 输出:8
print(a * b); // 输出:20
print(a / b); // 输出:5.0
print(a % b); // 输出:0
print(a ~/ b); // 输出:5
2. 关系运算符
关系运算符用于比较两个值。Dart中的关系运算符有 ==
(等于),!=
(不等于),>
(大于),<
(小于),>=
(大于或等于),<=
(小于或等于)。
var a = 10;
var b = 2;
print(a == b); // 输出:false
print(a != b); // 输出:true
print(a > b); // 输出:true
print(a < b); // 输出:false
print(a >= b); // 输出:true
print(a <= b); // 输出:false
3. 逻辑运算符
逻辑运算符主要用于Boolean类型的操作,但也可以用于非Boolean类型。Dart中的逻辑运算符有 &&
(逻辑与),||
(逻辑或),!
(逻辑非)。
var a = true;
var b = false;
print(a && b); // 输出:false
print(a || b); // 输出:true
print(!a); // 输出:false
4. 赋值运算符
赋值运算符用于给变量赋值。Dart中的赋值运算符有 =
,+=
,-=
,*=
,/=
,%=
,~/=
。
var a = 10;
var b = 2;
a = b;
print(a); // 输出:2
a += b;
print(a); // 输出:4
a -= b;
print(a); // 输出:2
a *= b;
print(a); // 输出:4
a ~/= b;
print(a); // 输出:2
a %= b;
print(a); // 输出:0
5. 条件运算符
Dart提供了两种类型的条件运算符,分别是 ? :
和 ??
。其中 ? :
可以在基于条件的情况下返回两个值中
的一个,??
用于在第一个操作数为null时返回第二个操作数。
var a = 10;
var b = null;
print(a > 10 ? 'a is greater than 10' : 'a is not greater than 10'); // 输出:a is not greater than 10
print(b ?? 'default value'); // 输出:default value
6. 类型测试运算符
类型测试运算符用于检查对象的类型。Dart中的类型测试运算符有 is
和 is!
。
var a = 10;
print(a is int); // 输出:true
print(a is! String); // 输出:true
7. 位运算符
位运算符用于对整数进行二进制位运算。Dart中的位运算符有 &
(与),|
(或),^
(异或),~
(非),>>
(右移),<<
(左移)。
var a = 10; // 二进制形式:1010
var b = 2; // 二进制形式:0010
print(a & b); // 输出:2
print(a | b); // 输出:10
print(a ^ b); // 输出:8
print(~a); // 输出:-11
print(a >> b); // 输出:2
print(a << b); // 输出:40
这些都是Dart语言中的基本运算符,熟悉这些运算符可以帮助我们更好地理解和编写Dart程序。
速查表
以下列出了 Dart 的运算符,从高到低按照优先级排列:
描述 |
运算符 |
---|---|
一元运算符(后置) |
++ -- ( ) [ ] . ?. |
一元运算符(前置) |
- ! ~ ++ -- |
乘法运算符 |
* / % ~/ |
加法运算符 |
+ - |
移位运算符 |
<< >> |
按位与 |
& |
按位异或 |
^ |
按位或 |
| |
关系与类型检测 |
>= > <= < as is is! |
逻辑与 |
&& |
逻辑或 |
|| |
是否为null |
?? |
条件运算符 |
? : |
级联运算符 |
.. |
赋值运算符 |
= *= /= ~/= %= += -= <<= >>= &= ^= |= ??= |
与其他类语言比较,Dart的运算符大同小异,这里只选出部分Dart特有的运算符(上表中使用斜粗体的运算符)进行讲解:
运算符 |
介绍 |
示例 |
---|---|---|
?. |
点符号前加问号,表示当前调用只在被访问者不为null的情况下才执行 |
var upper = name?.toUpperCase(); |
is is! |
检查对象是否属于或不属于某种类型 |
if (name is String) { ... } |
as |
将对象转换为某类型,如果转换失败将抛出异常 |
name as String |
?? |
空值检测,如:a1 ?? a2 ,表示如果a1不为null,则直接返回a1的值,否则返回a2的值 |
var message = input ?? 'Hello'; |
.. |
级联操作符,用于对同一对象执行一系列操作(链式操作),避免创建多余的临时变量 |
不使用级联:person.name = 'bob'; person.age = 28; 使用级联:person..name = 'bob' ..age = 28; |
??= |
空值判断赋值,只在左值为null的情况下才执行赋值操作 |
message ??= 'Hello'; |
推荐阅读
-
"优化nPlayer性能,轻松掌握WebDAV技巧"
-
文件大小管理的简易技巧:深入剖析与轻松掌握
-
轻松掌握C语言中的分支和循环结构
-
9步学会将700元单片机改造为以太坊节点,轻松掌握新技能!
-
轻松掌握JSP EL表达式(上):简化你的学习过程
-
实战攻略:轻松掌握JSP的增删改查操作(第一部分)
-
全面解析LVS负载均衡集群,轻松掌握!
-
轻松掌握 LINQ:from 到 where,再到 select 的全解析,别忘了 Any、All、Take、Skip 和 First/FirstOrDefault
-
轻松掌握 .NET 技术:深入理解 LINQ
-
轻松掌握C# LINQ查询:基础语法与Lambda表达式的运用