在本章中,我们将讨论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