Dart基础-运算符

运算符

dart定义的运算符如下所示

描述 运算符
一元后缀 expr++expr–()[].
一元前缀 -expr!expr~expr++expr–expr
乘法 */%~/
加法 +-
移位 <<>>
按位与 &
按位或 |
关系和类型判断 >=><=<asisis!
相等 ==!=
逻辑与 &&
逻辑或 ||
条件式 expr1 ? expr2 : expr3
级联 ..
赋值 ==/=~/=%=+=-=<<=>>=&=^= 、 |=

下面是使用运算符创建表达式的例子

a++
a + b
a = b
a == b
a ? b : c
a is T

在上面的所有运算符中,前排的优先级高于后排的,例如”%“ > ”==“ > ”&&“

//括号能改变优先级
if ((n % i == 0) && (d % i == 0))
//效果跟上面一样
if (n % i == 0 && d % i == 0)

算术运算符

dart常用的算术运算符如下

运算符 意义
+ 加法
- 减法
-expr 取反,或称否定(反向表达式)
* 乘法
/ 除法
~/ 整除
% 模运算,取整除后的余

写个例子

assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5);
assert(5 ~/ 2 == 2);
assert(5 % 2 == 1);

print('5除2等于${5~/2}余${5%2}');

dart还可以用两个前缀和后缀进行自增和自减运算

运算符 意义
++var var = var + 1(执行前加1)
var++ var = var + 1(执行后加1)
–var var = var - 1(执行前减1)
var– var = var - 1(执行后减1)

写个例子

var a, b;

a = 0;
b = ++a;
assert(a == b);

a = 0;
b = a++;
assert(a != b);

a = 0;
b = --a;
assert(a == b);

a = 0;
b = a--;
assert(a != b);

相等与关系运算符

dart常用的相等与关系运算符如下

运算符 意义
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

判断两个对象是否相等,使用 = 运算符,少数情况下,你想知道两个对象是否完全相等,可以使用 identical() 方法

assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);

类型运算符

用as、is和is!可以很方便的在执行时检查
用 obj is T 这个语法可以判断obj是否实现了T

if (emp is Person) {
  emp.firstName = 'Bob';
}

你也可以使用as运算符检查

(emp as Person).firstName = 'Bob';

还有is!运算符,它与is反着来

赋值运算符

赋值用 = 运算符,如果在前面加上其他运算符比如 += ,就可以组成复合赋值运算符

=    –=    /=    %=    >>=    ^=
+=    *=    ~/=    <<=    &=    |=

复合赋值运算符的语法说明是 a op= b 等于 a = a op b

var a = 2;
a *= 3;
assert(a == 6);

逻辑运算符

dart常用的逻辑运算符如下

运算符 意义
!expr 反转表达式,假为真,反之亦然
|| 逻辑或
&& 逻辑与

写个例子

if (!done && (col == 0 || col == 3)) {
  // ...
}

按位和位移运算符

你可以使用按位和位移运算符操纵一个数字

运算符 意义
&
|
^ 异或
~expr 按位补码(0成为1;1变成0)
<< 左移位
>> 右移位

写个例子

final value = 0x22;
final bitmask = 0x0f;

assert((value & bitmask) == 0x02);
assert((value & ~bitmask) == 0x20);
assert((value | bitmask) == 0x2f);
assert((value ^ bitmask) == 0x2d);
assert((value << 4) == 0x220);
assert((value >> 4) == 0x02);

其它运算符

剩下的部分运算符

运算符 名称 意义
() 函数应用 表示一个函数调用
[] 访问列表 在列表中索引指定值
expr1 ? expr2 : expr3 条件式 如果expr1为真,执行expr2,否则执行expr3
. 成员访问 选择对象的成员,例如foo.bar
.. 级联 对对象的成员执行多个操作
时间: 2024-08-04 05:42:49

Dart基础-运算符的相关文章

Swift语法专题三——基础运算符

Swift解读专题三--基础运算符 一.引言          运算符是编程语言不可缺少的一个部分,Swift中除了支持C中的运算符外,还提供了一些更加强大的运算符功能,例如取余符%可以用来计算浮点数,另外新增了两种范围运算符.Swift中有3类运算符: 1.一元运算符 运算符作用于一个操作数,可以出现在操作数前或者操作数后. 2.二元运算符 运算符作用于两个操作数,出现在两个操作数中间. 3.三元运算符 运算符作用于三个操作数间. 二.赋值运算符         赋值运算符用=符号表示,用于初

Dart基础-类

类 dart是面向对象的编程语言,每一个对象是一个类的实例,所有类都源于Object,创建一个对象,你可以使用 new 关键字构建一个类,构造函数的名字可以是 ClassName 或 ClassName.identifier var jsonData = JSON.decode('{"x":1,"y":2}'); var p1 = new Point(2, 2); var p2 = new Point.fromJson(jsonData); 对象里有成员函数和数据,

Dart基础-变量与类型

基本的Dart项目 //定义一个函数 printNumber(num aNumber) { //打印到控制台 print('数字是:$aNumber'); } //程序从这里开始执行 main(List<String> arguments) { //声明并初始化一个变量 var number = 42; //调用一个函数 printNumber(number); } 代码中用到的知识点如下 //这是一个注释 表示后面是注释,另外还可以使用/*...*/ num 一种类型,其他的内置类型有Str

Dart基础-函数

函数 下面是一个函数的例子 void printNumber(num number) { print('The number is $number.'); } 虽然参考文档建议指定参数和返回值的类型,但是你可以不指定 printNumber(number) { print('The number is $number.'); } 如果函数只有一个表达式,你可以使用速写语法 void printNumber(num number) => print('The number is $number.'

Dart基础-控制流程与异常处理

控制流程语句 你可以通过以下方法控制代码流程 if和else for循环 while和do-while循环 break和continue switch和case assert 你也可以使用try-catch和throw处理异常 if和else dart支持if语句和可选的else语句,简单的if语句可以用条件运算符( ? : ),下面是例子 if (isRaining()) { you.bringRainCoat(); } else if (isSnowing()) { you.wearJack

Dart基础-泛型和库

泛型 如果你看过API文档的基本类型数组和列表,你会发现实际上所有都是泛型,使用泛型可以提高代码的可读性 var names = new List<String>(); names.addAll(['Seth', 'Kathy', 'Lars']); //检查模式编译失败,生产模式编译成功 names.add(42); 使用泛型的另一个原因是减少代码重复,泛型可以创建多类型共享的接口,同时还能在检查模式早期预警,假如您创建一个接口缓存对象 abstract class ObjectCache

Lua基础---运算符

众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛! Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还有特殊运算符. 1.算术运算符有: + (加)   -(减)   *(乘)  /(除)   %(取模)   ^(求幂)   -(符号) 来看一个例子:test6.lua num1 = 4 ; num2 = 2 ; print(num1+num2); print(num1-num2); print(num1*num2); print(nu

【C++】C++运算符重载-基础

本篇博客讲解: 运算符重载基础,以及实例 运算符重载基础 运算符重载就是对已有的运算符赋予新的含义,实现新的功能. 运算符重载,如"+",它可以对int.float.string类型进行加法运算. "<<"是C++中的左移运算符,但是在输出操作中与cout配合被称为流插入运算符,可以进行输出. ">>"是右移运算符,与cin配合使用被称为流提取运算符. 它们都被称为运算符重载. 我们也可以根据我们的需要对C++中现有的运算

Kotlin语法基础之运算符

运算符 计算机程序中最小的程序单位成为表达式,每个表达式都可以由两部分组成,即操作数和运算符.操作数可以是变量.常量.类.数组.方法等,甚至是其他表达式.而运算符则用于支出表达式中单个或者多个操作数参与运算的规则,表达式通过运算之后产生的值依赖于表达式中包含的运算符的优先级和结核性.Kotlin语言包含了Java语言中的所有运算符的特性,并结合C语言的优点,增加自定义运算符的逻辑.这些运算符之中,主要包括有:算数运算符.区间运算符.逻辑运算符.关系运算符.赋值运算符.自增自减运算符等. 根据操作