3、Dart中运算符、条件判断、类型转换、循环语句

1,479 阅读2分钟

一、运算符

Dart中,运算符主要有算术运算符关系运算符逻辑运算符赋值运算符

1.算数运算符(+ -*/~/ (取整)%(取余))

void main() {
  /*算数运算符*/
  int a = 10;
  int b = 3;

  print(a + b); //加
  print(a - b); //减
  print(a * b); //乘
  print(a / b); //除
  print(a % b); //其余
  print(a ~/ b); //取整
}

image.png

2.关系运算符(==!=><>=<=)

/*关系运算符*/
  int a = 4;
  int b = 6;

  print(a == b); //判断是否相等      false
  print(a != b); //判断是否不等      true
  print(a > b); //判断是否大于       false
  print(a < b); //判断是否小于       true
  print(a >= b); //判断是否大于等于  false
  print(a <= b); //判断是否小于等于  true

image.png

3.逻辑运算符(!&&|| )

/*逻辑运算符*/
  // ! (取反)
  var bool = false;
  print(!bool); //true

  //&& (并且) 全部为true时值为true 否则值为false
  var a = true;
  var b = true;
  print(a && b); //true

  //|| (或者) 全为false的话值为false ,任一为true时值为true
  var c = true;
  var d = false;
  print(c || d); //true

image.png

4.赋值运算符(=??=+= -=*=/=~/=%=++--)

/*赋值运算符*/
  // =
  int a = 1;
  int b = 2;
  int c = a + b; //从右向左计算
  print(c); //3

  //??=
  var d;
  d ??= 5;
  print(d);

  //+=  -=  *=   /=   %=  ~/=
  var e = 4.0;
  e += 5; //等同于 e=e+5
  e -= 5; //等同于 e=e-5
  e *= 5; //等同于 e=e*5
  e /= 1; //等同于 e=e/5
  //....
  
  // ++(自增) 、--(自减)
  //如果++ -- 写在前面 这时候先运算 再赋值,如果++ --写在后面 先赋值后运行运算
  var f = 5;
  f++;
  print(f); //5+1 = 6

  f--;
  print(f); //6-1 = 5

  ++f;
  print(f); //6
  
  --f;
  print(f); //5

  var g = f++; //先赋值后运算
  print(g); //5
  print(f); //6

  var h = ++f; //先运算再赋值
  print(h); //6
  print(f); //6

二、条件表达式

1.if...else...和switch...case...

/*条件表达式*/
  var age = 18;
  // if...else...的写法
  if (age > 18) {
    print('已成年');
  } else if (age == 18) {
    print('刚成年');
  } else {
    print('未成年');
  }
  
  //switch...case...的写法
  switch (age) {
    case 19:
      print('已成年');
      break;
    case 17:
      print('未成年');
      break;
    default:
      print('刚成年');
      break;
  }

2.三元运算符

//三元运算符的写法
  print(age > 18? '已成年':age < 18? '未成年':'刚成年');

3.??运算符

//??运算符的写法
  var a = 1;
  var b = a ?? 2;
  print(b); //如果a有值时,b=a,打印为1

  var a;
  var b = a ?? 2;
  print(b); //如果a无值时,b=2,打印为2

三、类型转换

1、Number与String类型之间的转换

  // Number类型转换成String类型 toString()
  int a = 10;
  var b = a.toString();
  print(b is String); //true

  // String类型转成Number类型  int.parse()
  String c = '10.0';
  var d = int.parse(c);
  print(d is int); //true
  //注:String c = '10.0'为浮点数时,会发生报错,为例避免这样的报错,建议用以下写法:
  String c = '10';
  var d = double.parse(c);
  print(d is double); //true

2.其他类型转换成Booleans类型

// isEmpty:判断字符串是否为空
  var name = '';
  if (name.isEmpty) {
    print('name为空');
  } else {
    print('name不为空');
  }
  
  var age = 18;
  if (age == 0) {
    print('0');
  } else {
    print('非0');
  }

  var num1;
  if (num1 == 0) {
    print('0');
  } else {
    print('非0');
  }

  var num2;
  if (num2 == null) {
    print('空');
  } else {
    print('非空');
  }

  var num3 = 0 / 0;
  print(num3);
  if (num3.isNaN) {
    print('NaN');
  }

image.png

四、循环语句

1.三种循环方法

以依次打印1-10数字为例,如下三种循环方法:

main() {
  /**for循环 */
  for (var i = 1; i <= 10; i++) {
    print(i);
  }

  /**while循环 */
  int i = 1;
  while (i <= 10) {
    print(i);
    i++; //不写i++会出现死循环
  }

  /** do while循环 */

  int i = 1;
  do {
    print(i);
    i++;
  } while (i <= 10);
}

image.png

2.break和continue功能

break语句功能:
      1、在switch语句中使流程跳出switch结构。
      2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
      
      强调:
      1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句。
      2、在多层循环中,一个break语句只能向外跳出一层

    break可以用在switch case中 也可以用在 for 循环和 while循环中

continue语句的功能:
		  
    【注】只能在循环语句中使用,使本次循环结束,即跳过循环体下面尚未执行的语句,接着进行下次的是否执行循环的判断。

    continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环。