2.3 运算符 – 《简单易懂的Dart》

2.3.1 算术运算符

Dart沿用了C类语言的算术运算符,加减乘除模分别用+,-,*,/,%表示.

下面是一个简单的运算例子,我们用print函数打印运算结果.

void main(){  
  int a=1,b=2;
  print(a+b);
  print(a-b);
  print(a*b);
  print(a/b);
  print(a%b);
}

输出结果如下.

3  
-1
2  
0.5  
1  

除此之外,Dart还有一个~/运算符,它代表着整除.

2.3.2 关系运算符

Dart的关系运算符与JavaScript大致相同.

,>=,<,<=用来比较左右值的大小,其结果为布尔值.

void main(){  
  int a=1,b=2,c=1;
  print(a>b);
  print(a<b);
  print(a>=c);
  print(b<=c);
}

输出结果如下.

false  
true  
true  
false  

,!=,=,!用来比较左右值的相等关系.

=的区别在于只比较左右对象的值,而=会连对象也进行比较.

!=和!的区别同上,只是用!表示非的关系,即不等于.

我们声明int a和double b,给它们初始值1和1.0.

这里1和1.0在数学上是相等的,所以会给出true的结果,但int和double它们不属于同一个类型的对象,所以=会给出false的结果.

void main(){  
  int a=1;
  double b=1.0;
  print(a==b);
  print(a===b);
}

输出结果如下.

true  
false  

还有一个关系运算符is和is!,很容易看出它们之间的关系,后者是前者的反结果.

is有什么用呢?它其实和===运算符很相似,用来判断对象是否属于一个类型.

像这样:

void main(){  
  var a=1.0;
  print(a is num);
  print(a is int);
  print(a is double);
}

输出结果如下.

true  
false  
true  

2.3.3 逻辑运算符

Dart的逻辑运算符沿用C语言的逻辑运算符,使用&&和||表示逻辑与(AND)和逻辑或(OR)以及!(NOT).

void main(){  
  bool t=true,f=false;
  print(t && f);
  print(t || f);
}

输出结果如下.

false  
true  

2.3.4 位运算符

Dart的位运算符沿用C语言的位运算符,&,^,|,~来表示按位与,按位异或,按位或,按位非.

2.3.5 三元运算符

Dart只有一个三元运算符,它和C语言完全一样,这个三元运算符是这样的:

判断表达式?结果表达式1:结果表达式2

运行流程等同于下面这段伪代码函数:

Object iff(e1,e2,e3){  
  if(e1){
    return e2;
  }else{
    return e3;
  }
}

2.3.6 一元运算符

Dart运算的一元运算符沿用C语言.

可以使用的有~,!,-,++,–等运算符.

~表示按位非,!表示逻辑非,-表示取负数,++和–表示自增和自减.

2.3.7 赋值运算符

Dart的赋值运算符沿用C语言.

可以使用的有=,*=,/=,~/=,%=,+=,-=,<<=,>>=,&=,^=,|=.

把左值通过运算符计算后的结果赋给左值,其相比在表达式里计算后赋值的方式省去了一次取左值.