当前位置: 首页 > news >正文

(六)运算符 条件判断 类型转换

Dart 运算符与类型转换

1. Dart 运算符

1.1 算术运算符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法(结果为浮点数)
  • ~/:整除(结果为整数)
  • %:取余

1.2 关系运算符

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

1.3 逻辑运算符

  • !:逻辑非
  • &&:逻辑与(只有当所有条件都为 true 时,结果才为 true
  • ||:逻辑或(只要有一个条件为 true,结果就为 true

1.4 赋值运算符

  • 基础赋值运算符:=??=
  • 复合赋值运算符:+=-=*=/=%=~/=

1.5 条件表达式

  • if-else
  • switch-case
  • 三目运算符:条件表达式 ? 表达式1 : 表达式2
  • ?? 运算符:用于提供默认值,例如 a ?? b 表示如果 anull,则返回 b

2. 类型转换

2.1 Number 与 String 类型之间的转换

  • Number 转 String:使用 toString() 方法
  • String 转 Number:使用 int.parse()double.parse() 方法

2.2 其他类型转换为 Boolean 类型

  • isEmpty:判断字符串是否为空
  • isNotEmpty:判断字符串是否不为空
  • isFiniteisInfiniteisNaN:用于判断数值类型

示例代码

1. 算术运算符

void main() {
  int a = 13;
  int b = 5;

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

  var c = a * b;
  print('--------');
  print(c);
}

2. 关系运算符

void main() {
  int a = 5;
  int b = 3;

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

  if (a > b) {
    print('a大于b');
  } else {
    print('a小于b');
  }
}

3. 逻辑运算符

void main() {
  // ! 取反
  bool flag = false;
  print(!flag); // 取反

  // && 逻辑与
  bool a = true;
  bool b = true;
  print(a && b); // 全部为 true 时结果为 true

  // || 逻辑或
  bool a = false;
  bool b = false;
  print(a || b); // 全部为 false 时结果为 false

  // 条件判断
  int age = 23;
  String sex = "女";
  if (age == 20 || sex == "女") {
    print("$age --- $sex");
  } else {
    print("不打印");
  }
}

4. 赋值运算符

void main() {
  // 基础赋值运算符
  int a = 10;
  print(a);

  // ??= 运算符
  int b = 6;
  b ??= 23; // 如果 b 不为 null,则不赋值
  print(b);

  int c;
  c ??= 23; // 如果 c 为 null,则赋值为 23
  print(c);

  // 复合赋值运算符
  var d = 12;
  d *= 3; // d = d * 3
  print(d);
}

5. 条件表达式

void main() {
  // if-else
  bool flag = true;
  if (flag) {
    print('true');
  } else {
    print('false');
  }

  // 三目运算符
  bool flag = false;
  String c = flag ? '我是true' : '我是false';
  print(c);

  // ?? 运算符
  var a;
  var b = a ?? 10; // 如果 a 为 null,则 b = 10
  print(b);

  var a = 22;
  var b = a ?? 10; // 如果 a 不为 null,则 b = a
  print(b);
}

6. 类型转换

void main() {
  // Number 转 String
  var myNum = 12;
  var str = myNum.toString();
  print(str is String);

  // String 转 Number
  String str = '123';
  var myNum = int.parse(str);
  print(myNum is int);

  String str = '123.1';
  var myNum = double.parse(str);
  print(myNum is double);

  // 错误处理
  String price = '';
  try {
    var myNum = double.parse(price);
    print(myNum);
  } catch (err) {
    print(0);
  }

  // 其他类型转换为 Boolean
  var str = '';
  if (str.isEmpty) {
    print('str 空');
  } else {
    print('str 不为空');
  }

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

相关文章:

  • ShenNiusModularity项目源码学习(16:ShenNius.Admin.Mvc项目分析-1)
  • 鸿蒙开发:实现AI打字机效果
  • 【“以退为进“、“不得已而为之“与“风险对冲“的协同机制】
  • 大模型训练全流程深度解析
  • Deepseek-R1大模型微调实战技术深度解析
  • Qt 控件概述 QWdiget
  • 第一次使用腾讯云服务器部署项目记录与总结
  • Java 大视界 -- Java 大数据中的异常检测算法在工业物联网中的应用与优化(133)
  • ABAP语言的动态编程(4) - 综合案例:管理费用明细表
  • 如何配置 Docker 以实现无需 sudo 使用
  • 蓝桥杯十天冲刺-day1(getline读入空格)
  • 人工智能与人的智能,改变一生的思维模型【8】逆向思维
  • DeepSeek-R1大模型微调技术深度解析:架构、方法与应用全解析
  • 星越L_内后视镜使用讲解
  • 【AI】内容生成式AI(AIGC)的深度分析与扩展
  • 【Android】RuntimeShader 应用
  • SEO新手基础优化三步法
  • 【MATLAB实战】实现白鲸算法(BWO)优化BP神经网络:提升模型性能的新思路
  • 使用 BookMarkHub 插件进行书签同步
  • 小柒的逆序对
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速
  • 王沪宁主持召开全国政协主席会议
  • 一周人物|卡鲁等入围英国特纳奖,李学明新展中国美术馆
  • 五一假期上海铁路预计发送446万人次,同比增长8.4%
  • 国家发改委:是否进口美国饲料粮、油料不会影响我国粮食供应