表达式是一种特殊类型的语句,它计算为一个值。每个表达都由

  • 操作数 - 表示数据

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

考虑以下表达式 2 + 3。在该表达式中,23是操作数,符号+(加号)是 运算符 。

在本章中,我们将讨论Dart中可用的运算符。

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

算术运算符

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

序号 运算符和意义
1 +

2 -

减去

3 -expr

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

4 *

5 /

6 〜/

除以,返回整数结果

7

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

8 ++

增量

9 --

递减

算术运算符实例

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。

运算符 描述 实例
> 大于 (A > B) is False
< 小于 (A < B) is True
>= 大于等于 (A >= B) is False
<= 小于等于 (A <= B) is True
== 相等 (A==B) is True
!= 不相等 (A!=B) is True

相等和关系运算符实例

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

类型测试运算符

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

运算符 意义
is 如果对象是指定的类型,则为True
is! 如果对象不是指定的类型,则返回false

类型测试运算符实例

void main() {
int n = 2;
print(n is int);
} // true void main() {
double n = 2.20;
var num = n is! int;
print(num);
} // true

按位运算符

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

操作者 描述
位与 a&b 返回每个位位置的一个,两个操作数的相应位为1。
位或 一个| b 在每个位的位置返回一个,其中一个或两个操作数的相应位是1。
位亦或 a ^ b 在每个位位置返回一个,其中任一个但不是两个操作数的相应位都是1。
位否 ~a 反转其操作数的位。
左移位 一个«b 将二进制表示b(<32)位向左移位,从右移零。
有符号右移位 a»b 将二进制表示b(<32)位向右移位,丢弃移位的位。

按位运算符实例

void main() {
var a = 2; // Bit presentation 10
var b = 3; // Bit presentation 11 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中可用的赋值运算符。

序号 运算符 & 描述
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 /=(除和赋值)

它将左操作数与右操作数分开,并将结果赋给左操作数。

- 相同的逻辑适用于Bitwise运算符,因此它们将变为«=,»=,»=,»=,| =和^ =。

赋值运算符实例

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。

运算符 描述 实例
&&

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

(A > 10 && B > 10) is False.
||

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

(A > 10 || B > 10) is True.
!

取反 − 运算符返回表达式结果的反函数。. 例如: !(7>5) 返回 false

!(A > 10) is True.

逻辑运算实例

void main() {
var a = 10;
var b = 12;
var res = (a<b)&&(b>10);
print(res);
print('----------');
res = (a>b)||(b<10); print(res);
var res1 =!(a==b);
print(res1); print('-----------'); // 短路与或者或 a = 10;
var result = (a<10 && a>5);
print(result); result = ( a>5 || a<10);
print(result);
}

结果

true
----------
false
true
-----------
false
true

条件表达式

Dart有两个运算符,可以让你评估可能需要if else语句的表达式

条件?expr1:expr2

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

expr1 ?? 表达式2

如果 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

本文转自:http://codingdict.com/article/21914

Dart编程运算符的更多相关文章

  1. Dart编程实例 - 类型测试操作符 is!

    Dart编程实例 - 类型测试操作符 is! void main() { double n = 2.20; var num = n is! int; print(num); } 本文转自:http:/ ...

  2. Dart编程实例 - 类型测试操作符is

    Dart编程实例 - 类型测试操作符is void main() { int n = 2; print(n is int); } 本文转自:http://codingdict.com/article/ ...

  3. Dart编程实例 - 相等和关系操作符

    Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...

  4. Dart编程实例 算术操作符

    Dart编程实例 算术操作符 void main() { var num1 = 101; var num2 = 2; var res = 0; res = num1+num2; print(" ...

  5. Dart编程实例 - Const 关键字

    Dart编程实例 - Const 关键字 void main() { final v1 = 12; const v2 = 13; v2 = 12; } 本文转自:http://codingdict.c ...

  6. Dart编程实例 - Final 关键字

    Dart编程实例 - Final 关键字 void main() { final val1 = 12; print(val1); } 本文转自:http://codingdict.com/articl ...

  7. Dart编程实例 - Dynamic 关键字

    Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...

  8. Dart编程实例 - Dart 面向对象编程

    Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...

  9. Dart编程实例 - Enabling Checked Mode

    Dart编程实例 - Enabling Checked Mode void main() { int n="hello"; print(n); } 本文转自:http://codi ...

随机推荐

  1. 一些笔记jexcel

    根据坐标或者指定列标题 jexcel.getColumnNameFromId([ x, y ]);

  2. Async Clipboard AP

    转自奇舞周刊,个人学习记录,侵权删 编者按:本文作者李松峰,资深技术图书译者,翻译出版过40余部技术及交互设计专著,现任360奇舞团高级前端开发工程师,360前端技术委员会委员.W3C AC代表 如果 ...

  3. google cloud

    1.win10下安装gcloud SDK 必须设置环境变量CLOUDSDK_PYTHON指向执行文件而不是目录.

  4. vue 项目 多选 问题

    近期 vue 项目用到多选功能,引用的elementUI的级联多选 Cascader,但是没有效果. 后来发现是elementUI版本问题,我们项目用的是2.7.2版本,版本太低. 后来 卸载了 重新 ...

  5. 每天一个Linux命令:ls(1)

    ls ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录). 格式 ls [-alrtAFR] [name...] 参数选项 参数 备注 -a 列出目录下的所有文件,包括以 . ...

  6. renren-fast-vue-动态路由

    在renren-fast-vue项目中,左侧边栏的系统管理这一模块的路由采用的是动态路由的写法, 模块中的路由内容由后台动态生成,在前端开发阶段,采用的是mock模拟数据生成 先是在左侧边栏(view ...

  7. (转)OpenFire源码学习之十七:HTTP Service插件

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43457645 HTTP Service插件 这里的http接口插件是神马? Openfi ...

  8. debian 8 安装 codeblocks

    CodeBlocks优点: 1.所占资源少,对电脑硬件的要求低 2.开源软件,可以查看源代码,虽然我不会修改,但是如果我做一个IDE的话,我一定会参考这个伟大的软件的. 3.最重要的是,它完全跨了三大 ...

  9. Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数

    # page_num 当前页数, total_result_num 总共有多少条测试结果 def pagination(request, page_num, total_result_num, res ...

  10. diji模板

    void diji(int x){ fill(dis,dis+n,INT_MAX); dis[x] = ; ;i < n;i++) pre[i] = i; ){ int minn = INT_M ...