Dart编程运算符
表达式是一种特殊类型的语句,它计算为一个值。每个表达都由
操作数 - 表示数据
运算符 - 定义如何处理操作数以生成值。
考虑以下表达式 2 + 3。在该表达式中,2和3是操作数,符号+(加号)是 运算符 。
在本章中,我们将讨论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
如果condition为true,则表达式计算 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编程运算符的更多相关文章
- Dart编程实例 - 类型测试操作符 is!
Dart编程实例 - 类型测试操作符 is! void main() { double n = 2.20; var num = n is! int; print(num); } 本文转自:http:/ ...
- Dart编程实例 - 类型测试操作符is
Dart编程实例 - 类型测试操作符is void main() { int n = 2; print(n is int); } 本文转自:http://codingdict.com/article/ ...
- Dart编程实例 - 相等和关系操作符
Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...
- Dart编程实例 算术操作符
Dart编程实例 算术操作符 void main() { var num1 = 101; var num2 = 2; var res = 0; res = num1+num2; print(" ...
- Dart编程实例 - Const 关键字
Dart编程实例 - Const 关键字 void main() { final v1 = 12; const v2 = 13; v2 = 12; } 本文转自:http://codingdict.c ...
- Dart编程实例 - Final 关键字
Dart编程实例 - Final 关键字 void main() { final val1 = 12; print(val1); } 本文转自:http://codingdict.com/articl ...
- Dart编程实例 - Dynamic 关键字
Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...
- Dart编程实例 - Dart 面向对象编程
Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...
- Dart编程实例 - Enabling Checked Mode
Dart编程实例 - Enabling Checked Mode void main() { int n="hello"; print(n); } 本文转自:http://codi ...
随机推荐
- Codeforces 1156C 尺取法 / 二分
题意:给你一个数组,问里面最多能匹配出多少对,满足abs(a[i] - a[j]) >= k; 思路:首先肯定要排序. 思路1(尺取法):看了dreamoon的代码明白的.我们可以寻找一个最长的 ...
- 【JS学习】慕课网6-11编程联系 简单计算器
使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElementById( ...
- 欧拉路径 && 欧拉回路
- mysql5.7问题:[Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
在关闭mysql5.7的时候发现问题,一直处于夯住状态 [root@localhost ~]# /etc/init.d/mysqld stop Shutting down MySQL......... ...
- nodejs的桌面应用(electron)
最近发现nodejs可以做桌面应用,主要是之前的同事在搞,我也要稍微研究下不能落后啊,基于nodejs的桌面应用,常用的就是nw.js和electron,nw出的比较早,资料比较多,bug也很多,它的 ...
- C/C++ volatile
{ volatile和const关键很相似,都是修饰变量的,只是二者功能不一样. volatile在多线程当中经常使用,因为在某一线程多次调用某一个变量,编译器会进行优化,将该变量存放在在寄存器当中, ...
- sql 链接查询
连接查询是另一种类型的多表查询.连接查询对多个表进行JOIN运算,简单地说,就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上. 例如,我们想要选出students表的所 ...
- MySQL常规操作以及问题
背景 作为一个前端,偶尔搞下后端 要熟悉 SQL 操作,但是一段时间不用 会大部分忘记,之后又要重新查资料 所以自己整理一遍经常用到的 SQL 操作 和使用过程遇到的问题,方便自己快速查阅 一.安装 ...
- Android中当数据库需要更新时我们该怎么办?
问题:Android数据库更新并保留原来的数据如何实现 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我 ...
- ZROI week1
\[ZROI day1\] \[Grid\] 题目描述 给定一个矩阵,小写字母,求一条路径使得从\((1,1) -> (n,m)\),字典序最小,并且每次只能向右或者向下. 题解 先考虑如果没有 ...