在本章中,我们将讨论Dart中可用的运算符。
- 算术运算符
- 关系运算符
- 类型运算符
- 按位运算符
- 赋值运算符
- 逻辑运算符
算术运算符
下表显示了Dart支持的算术运算符。
Sr.No | Operators & Meaning |
---|---|
1 |
+ 相加 |
2 |
- 相减 |
3 |
-expr 一元减号,也称为负数 |
4 |
* 相乘 |
5 |
/ 相除 |
6 |
~/ 相除,返回整数值 |
7 |
% 获取整数除法的余数(取模) |
8 |
++ 增量 |
9 |
-- 减量 |
以下示例演示了如何在Dart中使用不同的运算符-
void main() { var num1 = 101; var num2 = 2; var res = 0; res = num1+num2; print("Addition: ${res}"); res = num1-num2; print("Subtraction: ${res}"); res = num1*num2; print("Multiplication: ${res}"); res = num1/num2; print("Division: ${res}"); res = num1~/num2; print("Division returning Integer: ${res}"); res = num1%num2; print("Remainder: ${res}"); num1++; print("Increment: ${num1}"); num2--; print("Decrement: ${num2}"); }
它将产生以下输出-
Addition:103 Subtraction: 99 Multiplication: 202 Division: 50.5 Division returning Integer: 50 Remainder: 1 Increment: 102 Decrement: 1
关系运算符
关联运算符测试或定义两个实体之间的关系类型,关系运算符返回布尔值,即true/false。
假设A=10,B=20。
Operator | Remark | Example |
---|---|---|
> | 大于 | (A > B) is False |
< | 小于 | (A < B) is True |
>= | 大于或等于 | (A >= B) is False |
<= | 小于或等于 | (A <= B) is True |
== | 相等 | (A==B) is True |
!= | 不相等 | (A!=B) is True |
以下示例显示了如何在Dart中使用相等和关系运算符-
void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 greater than num2 :: ' +res.toString()); res = num1<num2; print('num1 lesser than num2 :: ' +res.toString()); res = num1 >= num2; print('num1 greater than or equal to num2 :: ' +res.toString()); res = num1 <= num2; print('num1 lesser than or equal to num2 :: ' +res.toString()); res = num1 != num2; print('num1 not equal to num2 :: ' +res.toString()); res = num1 == num2; print('num1 equal to num2 :: ' +res.toString()); }
它将产生以下输出-
num1 greater than num2 :: false num1 lesser than num2 :: true num1 greater than or equal to num2 :: false num1 lesser than or equal to num2 :: true num1 not equal to num2 :: true num1 equal to num2 :: false
类型运算符
这些运算符非常方便在运行时检查类型。
Operator |
Remark |
---|---|
is | 确定对象是否具有指定的类型 |
is! | 如果对象具有指定的类型,则为false |
is 示例
void main() { int n = 2; print(n is int); }
它将产生以下输出-
true
is! 示例
void main() { double n = 2.20; var num = n is! int; print(num); }
它将产生以下输出-
true
按位运算符
下表列出了Dart中可用的按位运算符及其作用-
Operator | Remark | Example |
---|---|---|
Bitwise AND | a & b | 在每个操作数的对应位为1的每个位位置返回1。 |
Bitwise OR | a | b | 在每个操作数或两个操作数的对应位为1的每个位位置返回1。 |
Bitwise XOR | a ^ b | 在每个操作数(但不是两个操作数)的对应位均为1的每个位位置返回1。 |
Bitwise NOT | ~ a | 反转其操作数的位。 |
Left shift | a <<b | 将二进制表示形式的a向左移动b位,从右侧向右移动零。 |
Signpropagating right shift | a >> b | 将二进制表示形式的a向右移b位,丢弃移开的位。 |
以下示例显示了如何在Dart中使用按位运算符-
void main() { var a = 2; var b = 3; var result = (a & b); print("(a & b) => ${result}"); result = (a | b); print("(a | b) => ${result}"); result = (a ^ b); print("(a ^ b) => ${result}"); result = (~b); print("(~b) => ${result}"); result = (a < b); print("(a < b) => ${result}"); result = (a > b); print("(a > b) => ${result}"); }
它将产生以下输出-
(a & b) => 2 (a | b) => 3 (a ^ b) => 1 (~b) => -4 (a < b) => true (a > b) => false
赋值运算符
下表列出了Dart中可用的赋值运算符。
Sr.No | Operator & Remark |
---|---|
1 |
=(Simple Assignment ) 将值从右侧操作数分配到左侧操作数 Ex :C=A + B会将A + B的值赋给C |
2 |
??= 仅在变量为null时分配值 |
3 |
+=(Add and Assignment) 它将右操作数添加到左操作数,并将输出分配给左操作数。 Ex :C +=A等于C=C + A |
4 | -=(Subtract and Assignment) 它从左侧操作数中减去右侧操作数,并将输出分配给左侧操作数。 Ex :C-= A等于C=C – A |
5 |
*=(Multiply and Assignment) 它将右操作数与左操作数相乘,并将输出分配给左操作数。 Ex :C *=A等于C=C * A |
6 |
/=(Deivide and Assignment) 它将左操作数除以右操作数,并将输出分配给左操作数。 |
以下示例显示了如何在Dart中使用赋值运算符-
void main() { var a = 12; var b = 3; a+=b; print("a+=b : ${a}"); a = 12; b = 13; a-=b; print("a-=b : ${a}"); a = 12; b = 13; a*=b; print("a*=b' : ${a}"); a = 12; b = 13; a/=b; print("a/=b : ${a}"); a = 12; b = 13; a%=b; print("a%=b : ${a}"); }
它将产生以下输出-
a+=b : 15 a-=b : -1 a*=b' : 156 a/=b :0.9230769230769231 a%=b : 12
逻辑运算符
逻辑运算符用于组合两个或多个条件。逻辑运算符返回布尔值。假设变量A=10,而B=20。
Operator | Remark | Example |
---|---|---|
&& | And -仅当所有指定的表达式均返回true时,运算符才返回true |
(A > 10 && B > 10) is False. |
|| | OR -如果指定的至少一个表达式返回true,则运算符返回true |
(A > 10 || B > 10) is True. |
! | NOT - 运算符返回表达式结果的倒数。 例如:!(7>5)返回false |
!(A > 10) is True. |
以下示例显示了如何在Dart中使用逻辑运算符-
void main() { var a = 10; var b = 12; var res = (a<b)&&(b>10); print(res); }
它将产生以下输出-
true
让我们再举一个例子-
void main() { var a = 10; var b = 12; var res = (a>b)||(b<10); print(res); var res1 =!(a==b); print(res1); }
它将产生以下输出-
false true
短路运算符
&&和||运算符用于组合表达式。仅当两个条件都返回true时,&&运算符才返回true。
让我们考虑以下表达式-
var a = 10 var result = (a<10 && a>5)
在上面的示例中,a <10和a> 5是由&&运算符组合的两个表达式。在这里,第一个表达式返回false。但是,运算符要求两个表达式都返回true。因此,运算符将跳过第二个表达式。
||如果表达式之一返回true,则运算符返回true。例如-
var a = 10 var result = ( a>5 || a<10)
在上面的代码段中,两个表达式a> 5和a <10被a ||组合操作员。在这里,第一个表达式返回true。由于第一个表达式返回true,因此|||运算符跳过后面的表达式并返回true。
由于&&和||的这种行为运算符,它们称为短路运算符。
三元运算符
如果 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
参考链接
https://www.learnfk.com/dart-programming/dart-programming-operators.html