一起来学Flutter(5)之Dart运算符&条件表达式等

  今天我们来学习一下Dart中的运算符,条件表达式,强制转换等,直接上代码吧:

/**
 * Dart中的运算符
 *
 * 条件表达式
 *
 * 类型转换
 */
void main(){

  //赋值操作符
  var a = 4;
  a ??= 6;//??=是指当赋值的变量为null的时候,那么就执行赋值操作符给变量赋值
  //还有复合赋值操作符:*= /= ~/= %= += -= <<= >>= &= ^= |= ??=
  //笔者就不一一代码举例说明了

  //算术运算符
  arithmeticOperator();

  //关系运算符
  relationalOperator();

  //类型检测操作符
  typeDetectionOperator();

  //逻辑运算符
  logicalOperators();

  //条件表达式
  var value = 4;
  //三元运算符
  var v = value >= 3?"$value大于3":"$value小于3";

  var value2;
  var v2 = value2 ?? 3;//当value2为null的时候,v2被赋值为int类型值2

  //级联符号
  Student s = new Student();
  s..a()
  ..b()
  ..c()
  ..d();
  //其实说白了,级联符号就是类似于Java中的链式调用
  //级联(..)允许您对同一对象执行一系列操作。除了函数调用,您还可以访问同一对象上的
  // 字段。这通常会省去创建临时变量的步骤,并允许您编写更多的级联代码。

  //其它操作符
  //()-->函数调用
  //[]-->列表访问符
  //.-->成员访问符
  //?.-->判空成员访问符(即null时不访问,否则,访问)

}

//逻辑运算符
void logicalOperators(){
  bool a = true;
  bool b = false;

  //逻辑非
  bool c = !a;

  //逻辑与
  bool d = a && b;

  //逻辑或
  bool e = a || b;

  //位运算符(跟Java一样)
  //&-->按位与
  //|-->按位或
  //^-->异或运算符
  //~-->一元位补码
  //<<-->左移
  //>>-->右移

}

//类型检测操作符
void typeDetectionOperator(){

  //强制转换
  double d = 3.4;
  int a = d as int;//这里会出现异常,原因之后的文章会讲到,或者你可以自己查原因-_-

  //判断类型
  bool b = a is int;//判断a是否属于int类型
  b = d is! double;//判断d是否不属于double类型

}

//算术运算符
void arithmeticOperator(){

  //加
  int a = 3 + 4;

  //减
  int b = 3 - 4;

  //乘
  int c = 3 * 4;

  //除
  double d = 8 / 4;//除号运算符返回的结果类型为double
  int e = 8 ~/ 6;//取整运算符~/结果为int
  int f = 8 % 6;//取模

  //一元运算符
  a++;
  ++a;
  a--;
  --a;

}

//关系运算符,返回结果均为bool类型
void relationalOperator(){

  bool a = 3 == 4;
  print(a);

  a = 3 != 4;
  print(a);

  a = 3 > 4;//false
  a = 3 >= 4;//false
  a = 3 < 4;//true
  a = 3 <= 4;//true


}

class Student{

  Student a(){}
  Student b(){}
  Student c(){}
  Student d(){}
  Student e(){}

}

  请仔细阅读以上代码,最好自己手敲一遍。其实Dart中的操作符和Java相比改变了一些,但有些也是没有改变。总的来说Dart的运算符,尤其是带"?"的,它减少了代码的编写,我举个例子,如果我要访问学生的年龄,那么调用getAge()之前是不是要判null,Java中的代码是这么干的:

int age = 0;
if(student != null){
   age = student.getAge();
}

而Dart是这么干的:

int age = student?.age;//当student为null时,返回值为null,否则返回值为student的age属性

怎么样,是不是减少了很多代码呢?

  • 订阅笔者的一起来学Flutter系列文章,将Flutter加入到自己的技术栈吧!
  • 下篇文章:Dart中循环&条件分支语句

你可能感兴趣的:(Dart,Flutter)