【Dart语言第5篇】运算符

dart运算符

1、算术运算符

算术运算符有6种,分别是加减乘除,取余和取整。

运算符描述
+加法
-减法
*乘法
/除法
%取余
~/取整
void main() {
  // 定义变量
  num a = 17, b = 3;
  print(a + b);  // 加 20
  print(a - b);  // 减 14
  print(a * b);  // 乘 51
  print(a / b);  // 除 5.666666666666667
  print(a % b);  // 取余 2
  print(a ~/ b);  // 取整 5
}

2、关系运算符

关系运算符有6种,分别是等于(==)、不等于(!=)、大于(>)、小于(<)、大于或等于(>=)、小于或等于(<=)。返回的是 bool 类型 true false

运算符描述
==等于
!=不等于
>大于
<小于
>=大于或等于
<=小于或等于
void main() {
  // 定义变量
  num a = 17, b = 3;
  print(a == b);  // false
  print(a != b);  // true
  print(a > b);  // true
  print(a < b);  // false
  print(a >= b);  // true
  print(a <= b);  // false
}

3、逻辑运算符

运算符描述
!逻辑非,取反,如果true,返回false, 反之。
&&逻辑与,需要同时满足,一个为false,返回false
||逻辑或,有一个为true,直接返回true
void main() {
  bool a = false;
  bool b = true;
  print(!a); // true
  print(a && b); // false
  print(a || b); // true
}

4、赋值运算符

赋值运算符有三种,分别是基础赋值运算符、复合赋值运算符。

运算符描述
基础赋值运算符:
=基础赋值
??=变量值为null的赋值,相当于js中的默认值
复合赋值运算符:
+=a+=b 相当于 a = a + b;
-=a-=b 相当于 a = a - b;
*=a*=b 相当于 a = a * b;
/=a/=b 相当于 a = a / b;
%=a+=b 相当于 a = a % b;
~/=a-=b 相当于 a = a ~/ b;

5、条件表达式

条件表达式有四种,分别是if…elseswitch…case…default三目运算符??运算符
前三种和其他语言的类似,我们看一下空判断 ??: express 1 ?? express2 如果 express 1 为null,那么就使用 第二个;

void main() {
  var a;
  int b = 1;
  int c = a ?? b;
  print(c); // 1
}

6、级联运算符

级联运算符 (…, ?..) 可以让你在同一个对象上连续调用多个对象的变量或方法;

class Model {
  String hello(String name) {
    var value = 'hello $name';
    print(value);
    return value;
  }
  
  void sayHi(String name) {
    print("hi $name");  
  }
  
  void sayGoodbye(String name) {
    print('goodbye $name');
  }
}

// 针对`Model`类基本的用法是:
var model = Model()
model.hello('world')
model.sayHi('bill')
model.sayGoodbye('bill');

// 但是dart提供了更加简便的打开方式,级联(..)
// 下面的代码等效于上面的传统调用方式。
var model = Model()
  ..hello('world')
  ..sayHi('bill')
  ..sayGoodbye('bill');
  1. 使用级联让代码更简洁。
  2. 建议对void方法使用级联(注意丢失返回值的问题)。

7、其他操作符

运算符名字描述
()使用方法代表调用某个方法
[ ]访问List访问List中特定位置的元素
?[ ]判空访问List左侧调用者不为空时,访问List中特定位置元素
.访问成员成员访问符
?.条件访问成员与上述成员访问符类似,但是左边的操作对象不能为null,例如:
foo?.bar,如果 foonull 则返回 null,否则返回 bar

8、用符号处理空值

1、?? 条件运算符

如果左边表达式为 null, 则使用右边的值。

int a = 1; 
int b;
int c = b ?? a; // 如果b不为空,则c=b,否则c=a;
2、赋值空判断 ??=

变量自身为空的判断,如果为空赋值为右边的值,作用类似于 js 中的默认值:

String str = 'Tom';
str ??= 'Jerry'; // 如果变量str为空,则赋值为 Jerry
// 等同于:
if(str == null) { str = 'Jerry'};
3、条件访问 ?.

可以避免因为左边对象可能为 null , 导致的异常,也就是说如果为空那么这条语句将不会被执行。

4、非空断言 !

他往往是应对编译器的而不是编译本身,使用“非空断言”,必须确保这个变量已经预想“非空判断”过了。

class Class1 {
  int? val1;
  int? val2;
  Class1(this.val1, this.val2);
  int sum1() {
    return val1! + val2!;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small_Axe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值