Dart编程 - 运算符



表达式是一种特殊的语句,它会计算出一个值。每个表达式都由以下部分组成:

  • 操作数 - 代表数据

  • 运算符 - 定义如何处理操作数以产生一个值。

考虑以下表达式:“2 + 3”。在这个表达式中,2 和 3 是操作数,符号“+”(加号)是运算符

本章将讨论Dart中可用的运算符。

  • 算术运算符
  • 相等性和关系运算符
  • 类型测试运算符
  • 位运算符
  • 赋值运算符
  • 逻辑运算符

算术运算符

下表显示了Dart支持的算术运算符。

显示示例

序号 运算符及含义
1 +

2

减法

3 -expr

一元减号,也称为负号(反转表达式的符号)

4 *

5 /

6 ~/

整数除法,返回整数结果

7 %

获取整数除法的余数(模运算)

8 ++

自增

9 --

自减

相等性和关系运算符

关系运算符测试或定义两种实体之间的关系类型。关系运算符返回布尔值,即true/false。

假设A的值为10,B的值为20。

显示示例

运算符 描述 示例
> 大于 (A > B) 为False
< 小于 (A < B) 为True
>= 大于或等于 (A >= B) 为False
<= 小于或等于 (A <= B) 为True
== 等于 (A==B) 为False
!= 不等于 (A!=B) 为True

类型测试运算符

这些运算符方便在运行时检查类型。

显示示例

运算符 含义
is 如果对象具有指定的类型,则为True
is! 如果对象不具有指定的类型,则为True

位运算符

下表列出了Dart中可用的位运算符及其作用:

显示示例

运算符 描述 示例
按位与 a & b 对于两个操作数的对应位都为1的每个位位置,返回1。
按位或 a | b 对于两个操作数的对应位中至少有一个为1的每个位位置,返回1。
按位异或 a ^ b 对于两个操作数的对应位中只有一个为1的每个位位置,返回1。
按位非 ~ a 反转其操作数的位。
左移 a << b 将a的二进制表示向左移动b(<32)位,从右边移入零。
带符号右移 a >> b 将a的二进制表示向右移动b(<32)位,丢弃移出的位。

赋值运算符

下表列出了Dart中可用的赋值运算符。

显示示例

序号 运算符及描述
1 =(简单赋值)

将右侧操作数的值赋给左侧操作数

:C = A + B 将A + B的值赋给C

2 ??=

仅当变量为null时才赋值

3 +=(加法赋值)

它将右侧操作数加到左侧操作数,并将结果赋给左侧操作数。

:C += A 等效于 C = C + A

4 -=(减法赋值)

它从左侧操作数减去右侧操作数,并将结果赋给左侧操作数。

:C -= A 等效于 C = C – A

5 *=(乘法赋值)

它将右侧操作数乘以左侧操作数,并将结果赋给左侧操作数。

:C *= A 等效于 C = C * A

6 /=(除法赋值)

它将左侧操作数除以右侧操作数,并将结果赋给左侧操作数。

注意 - 位运算符也适用相同的逻辑,因此它们将变为<<=, >>=, &=, |= 和 ^=。

逻辑运算符

逻辑运算符用于组合两个或多个条件。逻辑运算符返回布尔值。假设变量A的值为10,B的值为20。

显示示例

运算符 描述 示例
&&

- 只有当所有指定的表达式都返回true时,运算符才返回true

(A > 10 && B > 10) 为False。
||

- 如果至少一个指定的表达式返回true,则运算符返回true

(A > 10 || B > 10) 为True。
!

- 运算符返回表达式的结果的反值。例如:!(7>5) 返回false

!(A > 10) 为True。

条件表达式

Dart有两个运算符,允许你评估可能需要ifelse语句的表达式:

condition ? expr1 : expr2

如果condition为true,则表达式计算expr1(并返回其值);否则,它计算并返回expr2的值。

expr1 ?? expr2

如果expr1非null,则返回其值;否则,计算并返回expr2的值。

示例

以下示例显示如何在Dart中使用条件表达式:

void main() { 
   var a = 10; 
   var res = a > 12 ? "value greater than 10":"value lesser than or equal to 10"; 
   print(res); 
} 

它将产生以下输出:

value lesser than or equal to 10

示例

让我们来看另一个例子:

void main() { 
   var a = null; 
   var b = 12; 
   var res = a ?? b; 
   print(res); 
}

它将产生以下输出:

12
广告