Dart初级阶段02(运算符+分支结构)

265 阅读5分钟

hello,本篇内容是Dart语言的运算符和分支结构的介绍,如果你想对Dart基础数据类型有所了解,请点击这里

在Dart语言中,运算符大致分这几种类型:

1. 关系运算符:==(等于)、 !=(不等于)、>(大于)、 <(小于)、 >=(大于等于)、 <=(小于等于)
2. 逻辑运算符:&&(逻辑与)、 ||(逻辑或)、 !(逻辑非)
3. 算术运算符:+(加)、 -(减)、 *(乘)、 /(除)、 ~/(取整)、 %(取余)
4. 赋值运算符:=、+=、-=、*=、/=、~/=、%=、??=
一、运算符
  1. 关系运算符:==、 !=、>、 <、 >=、 <=

关系运算符组成的式子叫做关系表达式,表达式一定会返回值,关系表达式的返回值只有两种: 或者 ,注意: 一个等号表示赋值,两个等号表示判断是否相等,并且中间不能有空格。

  int b = 10, c = 22;
  //大于
  bool result = b > c;
  print(result); //false
  //小于等于
  result = b <= c;
  print(result); //true
  //不等于
  result = b != c;
  print(result); //true
  //等于
  result = b == c;
  print(result); //false
  1. 逻辑运算符:&&(逻辑与)、 ||(逻辑或)、 !(逻辑非)

逻辑运算符组成的式子叫做逻辑表达式逻辑表达式的返回值只有两种: 或者

  int i = 2, j = 7, k = 9;
  //1. 逻辑与&& : 只有当运算符两侧同时为真,该式子才为真,否则为假 (一假则假)
  bool res = (i < j) && (i == k);
  print(res); //false

  res = (j >= i) && (j <= k);
  print(res); //true
  
  //2. 逻辑或|| : 只有当运算符两侧同时为假,该式子才为假,否则为真(一真则真)
  res = (j == k) || (j >= i);
  print(res); //true

  //3. 逻辑非 ! : 取反,真变假, 假变真
  res = !(j == k);
  print(res); //true
  
  //逻辑短路
  int d = 0;
  //逻辑与短路现象,逻辑与只要左侧表达式为假时,就不在执行右侧的表达式
  res = (i > k) && (++d) == 0;
  print(d); //0,i>k不成立,右侧++d不执行
  
  //逻辑或短路现象,逻辑或只要左侧表达式为真时,就不在执行右侧的表达式
  res = (i + j) >= k || (++d) == 0;
  print(d); //0, (i + j) >= k成立,右侧++d不执行
  1. 算术运算符:+(加)、 -(减)、 *(乘)、 /(除)、 ~/(取整)、 %(取余) 由算术运算符组成的式子叫做算术表达式算术表达式的返回值为num类型数据
  int a=13;
  int b=5;
  
  print(a + b); //18,加
  print(a - b); //8,减
  print(a * b); //65,乘
  print(a / b); //2.6,除
  print(a % b); //3,取余
  print(a ~/ b); //2,取整
  1. 赋值运算符:=、??=、+=、*=、/=、%=、~/= 由赋值运算符组成的式子叫做赋值表达式赋值表达式是把赋值运算符右侧的值赋给运算符左侧
  var x = 10;
  print("x = 10 -> ${x}"); // x = 10 -> 10,赋值运算

  x += 15;
  print("x += 15 -> ${x}"); // x += 15 -> 25,相加并赋值运算

  x -= 10;
  print("x -= 10 -> ${x}"); // x -= 10 -> 15,相减并赋值运算

  x *= 10;
  print("x *= 10 -> ${x}"); // x *= 10 -> 150,相乘并赋值运算

  double y = 10;
  y /= 2;
  print("y /= 2 -> ${y}"); // y /= 2 -> 5.0,相除并赋值运算

  x ~/= 5;
  print("x /= 5 -> ${x}"); // x /= 5 -> 30,取整并赋值运算

  x %= 7;
  print("x %= 7 -> ${x}"); // x %= 7 -> 2,取余并赋值运算

特殊赋值语句说明:??= 、 ??

a ??= b;表示如果a的值为空,将b的值赋值给a,示例如下:

  var temp1;
  temp1 ??= "hello";
  print(temp1); // hello

  var temp2 = "dart";
  temp2 ??= "world";
  print(temp2); // dart

c = a ?? b;表示如果a的值不为空,就把a赋值给c,如果a的值为空,就把b的值赋值给c,示例如下:

  var temp3 = "dart";
  var temp4 = temp3 ?? "flutter";
  print(temp4); // dart

  var temp5;
  var temp6 = temp5 ?? "flutter";
  print(temp6); // flutter
二、Dart分支语句

语句是组成程序的最小单元,Dart语句的基本结构基本遵守:顺序结构、分支结构、循环结构

  • 顺序结构: 程序从Main函数进入后,代码从上往下,依次执行;
  • 分支结构: 当程序执行到某个位置的时候,进行条件判断,根据判断的结果来执行不同的操作;
  • 循环结构: 程序执行到某个位置时,反复执行某段代码.
  1. if分支结构
//第一种if分支结构,格式:
if(条件表达式)
{
  语句;
}			

示例1:有两个数a和b,如果a>b,输出“a>b”

  int a = 3, b = 2;
  if (a > b) {
    print("a>b"); // a>b
  }

示例2:有一个整数c,判断如果这个数是偶数,就输出这个数的二倍

  int c = 4;
  if (c % 2 == 0) {
    print(c * 2); //8 
  }
  //注意:判断一个数是否是偶数,可以直接用系统提供函数isEven,即上述:c % 2 == 0可以改为:c.isEven
//第二种if分支结构,格式:
if(条件表达式)
{
  语句1;
}else
{
  语句2;
}
执行顺序: 先判断条件表达式是否成立,如果成立,执行语句1,否则执行语句2

示例3:求出x,y中的最大值,并赋值给max,将max进行输出

 int x = 10, y = 20;
  int max;
  if (x > y) {
    max = x;
  } else {
    max = y;
  }
  print(max);

示例4:判断一个整数能不能被2和3整除,如果能输出"该数可以被2和3整除",否则 输出"不能整除"

 int x = 12;
  if (x % 2 == 0 && x % 3 == 0) {
    print("该数可以被2和3整除");
  } else {
    print("不能整除");
  }

示例5:判断年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年。注意:闰年是能被400整除或者(能被4整除,但是不能被100整除)

  int year = 2023;
  if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
    print("该年是闰年");
  } else {
    print("该年不是闰年");
  }
//第三种if分支结构,格式:
if(条件表达式1){
  语句1;
}else if(条件表达式2){
  语句2;
}else{
  语句3;
}
执行顺序: 如果条件表达式1成立,执行语句1,否则判断条件表达式2,如果条件表达式2成立,执行语句2,否则执行语句3,注意:一旦某个语句执行,该分支结构执行完毕

示例6:判断学生的成绩,如果成绩在80-100之间,则输出优秀,如果成绩在60-80之间,则输出中等,否则输出不及格

 int score = 85;
  if (score < 0 || score > 100) {
    print("你咋这么厉害呢");
  } else if (score >= 80) {
    print("优秀");
  } else if (score >= 60) {
    print("中等");
  } else {
    print("不及格");
  }
  1. switch分支结构

日常开发中,单个条件判断使用if...else是最简单方便的。有时还会遇到多个判断条件的情况,我们使用switch...case会比if...else更加高效,也可以避免在维护代码的时候遇到if判断地狱。

示例7:判断一个整数,如果为1~4,对应打出春夏秋冬的英语单词,否则输出:该数不合法

  int num = 3;
  switch (num) {
    case 1:
      print("Spring");
      break;
    case 2:
      print("Summer");
      break;
    case 3:
      print("Autumn");
      break;
    case 4:
      print("Winter");
      break;
    default:
      print("该数不合法");
      break;
  }
注意事项:
1. switch后的表达式类型要与case后的 值的类型保持一致
2. case后面必须是常量或者常量表达式,不能用变量
3. case后面只要有语句,必须加上break,break用于跳出当前操作
4. default语句可有可无,如果有的话只能有一个
5. switch后的表达式只允许比较整型或字符串这类常量。
6. switch中多个case可以执行同一条语句