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

Dart - 数字类型、布尔类型、列表类型

一、数字类型

1、基本使用
  1. Dart 提供了 int 和 double 两种主要的数字类型,以及 num 作为它们的父类型
类型说明
int表示整数
double表示双精度浮点数(小数)
num可以同时表示整数和浮点数
int intValue=42;double doubleValue=3.14;
num numInt=100;num numDouble=99.99;
  1. 算术运算
int sum=10+5;int difference=10-3;int product=4*7;double quotient=15/3;int remainder=17%5;// 取余int quotientInt=17~/5;// 整除print('Sum:$sum');print('Difference:$difference');print('Product:$product');print('Quotient:$quotient');print('Remainder:$remainder');print('Integer Quotient:$quotientInt');
# 输出结果 Sum: 15 Difference: 7 Product: 28 Quotient: 5.0 Remainder: 2 Integer Quotient: 3
  1. 自增自减
int counter=5;counter++;print('After increment:$counter');counter--;print('After decrement:$counter');
# 输出结果 After increment: 6 After decrement: 5
2、数学运算库
  • Dart 在dart:math库中提供了丰富的数学函数
import'dart:math';voidmain(){// 幂运算print('pow(2, 3):${pow(2,3)}');// 平方根print('sqrt(16):${sqrt(16)}');// 最大最小值print('max(10, 20):${max(10,20)}');print('min(10, 20):${min(10,20)}');// 随机数print('Random:${Random().nextInt(100)}');}
3、类型转换
(1)字符串转数字
  1. 基本转换
int intValue=int.parse('42');print('Parsed int:$intValue');double doubleValue=double.parse('3.14');print('Parsed double:$doubleValue');
# 输出结果 Parsed int: 42 Parsed double: 3.14
  1. 处理无效输入
try{int invalid=int.parse('abc');}catch(e){print('Parse error:$e');}
# 输出结果 Parse error: FormatException: Invalid radix-10 number (at character 1) abc ^
  1. 安全转换
int?result1=int.tryParse('123');print(result1)int?result2=int.tryParse('abc');print(result2);
# 输出结果 Safe parsed int: 123 Safe parsed invalid: null
(2)数字转字符串
int num=42;double decimal=3.14159;// 基本转换print('Int to String:${num.toString()}');print('Double to String:${decimal.toString()}');// 保留小数位print('Fixed 2:${decimal.toStringAsFixed(2)}');print('Fixed 4:${decimal.toStringAsFixed(4)}');
# 输出结果 Int to String: 42 Double to String: 3.14159 Fixed 2: 3.14 Fixed 4: 3.1416
(3)int 与 double 互转
int intValue=10;double doubleValue=3.14;double doubleValue2=3.6;// int 转 doubledouble fromInt=intValue.toDouble();print('Int to Double:$fromInt');// double 转 int (截断小数部分)int fromDouble=doubleValue.toInt();print('Double to Int:$fromDouble');// 四舍五入转 intint rounded=doubleValue2.round();print('Rounded:$rounded');// 向上向下取整print('Floor:${doubleValue.floor()}');print('Ceiling:${doubleValue.ceil()}');
# 输出结果 Int to Double: 10.0 Double to Int: 3 Rounded: 4 Floor: 3 Ceiling: 4
4、常用属性
// int 的属性int value=-42;print('Hash code:${value.hashCode}');print('Bit length:${value.bitLength}');print('Sign:${value.sign}');print('Is even:${value.isEven}');print('Is odd:${value.isOdd}');// double 的属性double d=3.14159;print('Is finite:${d.isFinite}');print('Is infinite:${d.isInfinite}');print('Is NaN:${d.isNaN}');print('Sign:${d.sign}');
# 输出结果 Hash code: 475673 Bit length: 6 Sign: -1 Is even: true Is odd: false Is finite: true Is infinite: false Is NaN: false Sign: 1.0
5、注意事项
  • int 和 double 不能直接运算,需要先转换为相同类型。
// 错误int result=10+3.14;
// 正确double result=10.toDouble()+3.14;

二、布尔类型

bool isActive=true;bool isFinished=false;if(isActive){print('The system is active');}else{print('The system is inactive');}

三、列表类型

1、基本使用
  1. 创建列表
// 创建整数列表List<int>numbers=[1,2,3,4,5];print('Numbers:$numbers');// 创建字符串列表List<String>fruits=['Apple','Banana','Orange'];print('Fruits:$fruits');// 创建动态类型列表List<dynamic>mixed=[1,'two',3.0,true];print('Mixed:$mixed');// 创建空列表List<int>emptyList=[];print('Empty List:$emptyList');
# 输出结果 Numbers: [1, 2, 3, 4, 5] Fruits: [Apple, Banana, Orange] Mixed: [1, two, 3.0, true] Empty List: []
  1. 访问列表元素
List<int>numbers=[10,20,30,40,50];// 通过索引访问print('First element:${numbers[0]}');print('Third element:${numbers[2]}');// 使用 first 和 lastprint('First:${numbers.first}');print('Last:${numbers.last}');
# 输出结果 First element: 10 Third element: 30 First: 10 Last: 50
  1. 修改列表元素
List<int>numbers=[1,2,3,4,5];print('Original:$numbers');// 修改单个元素numbers[0]=10;print('After modifying first:$numbers');// 修改最后一个元素numbers[numbers.length-1]=50;print('After modifying last:$numbers');
# 输出结果 Original: [1, 2, 3, 4, 5] After modifying first: [10, 2, 3, 4, 5] After modifying last: [10, 2, 3, 4, 50]
  1. 添加元素
List<int>numbers=[1,2,3];// 添加单个元素numbers.add(4);print('After add(4):$numbers');// 添加多个元素numbers.addAll([5,6,7]);print('After addAll:$numbers');// 在指定位置插入numbers.insert(0,0);print('After insert at 0:$numbers');// 插入多个元素numbers.insertAll(2,[10,20]);print('After insertAll at 2:$numbers');
# 输出结果 After add(4): [1, 2, 3, 4] After addAll: [1, 2, 3, 4, 5, 6, 7] After insert at 0: [0, 1, 2, 3, 4, 5, 6, 7] After insertAll at 2: [0, 1, 10, 20, 2, 3, 4, 5, 6, 7]
  1. 删除元素
List<int>numbers=[1,2,3,4,5,3,6,3];// 删除第一个匹配的元素numbers.remove(3);print('After remove(3):$numbers');// 删除指定索引的元素numbers.removeAt(0);print('After removeAt(0):$numbers');// 删除最后一个元素numbers.removeLast();print('After removeLast:$numbers');// 删除满足条件的元素numbers.removeWhere((n)=>n>4);print('After removeWhere(> 4):$numbers');// 清空列表numbers.clear();print('After clear:$numbers');
# 输出结果 After remove(3): [1, 2, 4, 5, 3, 6, 3] After removeAt(0): [2, 4, 5, 3, 6, 3] After removeLast: [2, 4, 5, 3, 6] After removeWhere(> 4): [2, 4, 3] After clear: []
  1. 查找元素
List<int>numbers=[1,2,3,4,5,6];List<int>withDuplicates=[1,2,3,2,3,2];// 检查是否包含元素bool hasThree=numbers.contains(3);print('Contains 3:$hasThree');// 查找元素的索引int index=numbers.indexOf(3);print('Index of 3:$index');// 查找最后一次出现的索引int lastIndex=withDuplicates.lastIndexOf(2);print('Last index of 2:$lastIndex');// 查找满足条件的第一个元素int?found=numbers.firstWhere((n)=>n>3);print('First > 3:$found');
# 输出结果 Contains 3: true Index of 3: 2 Last index of 2: 5 First > 3: 4
2、创建特殊列表
  1. 固定长度列表
// 创建固定长度列表,填充默认值List<int>fixedLength=List.filled(5,0);print('Fixed length:$fixedLength');fixedLength[0]=10;print('After modify:$fixedLength');// 不能添加或删除元素// fixedLength.add(1);// fixedLength.removeAt(0);
# 輸出结果 Fixed length: [0, 0, 0, 0, 0] After modify: [10, 0, 0, 0, 0]
  1. 生成列表
// 使用 generate 生成列表List<int>generated=List.generate(5,(index)=>index*2);print('Generated:$generated');// 生成 0 ~ 9List<int>range=List.generate(10,(i)=>i);print('Range 0-9:$range');
# 输出结果 Generated: [0, 2, 4, 6, 8] Range 0-9: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1. 从其他集合创建
// 从 Iterable 创建List<int>fromIterable=List.from([1,2,3,4,5]);print('From Iterable:$fromIterable');// 从 Set 创建Set<int>set={1,2,3,2,1};List<int>fromSet=set.toList();print('From Set:$fromSet');// 使用 ofList<String>ofList=List.of(['a','b','c']);print('From of:$ofList');// 不可变列表List<int>immutable=List.unmodifiable([1,2,3]);print('Unmodifiable:$immutable');// immutable[0] = 10;
# 输出结果 From Iterable: [1, 2, 3, 4, 5] From Set: [1, 2, 3] From of: [a, b, c] Unmodifiable: [1, 2, 3]
3、注意事项
  1. 列表索引越界
List<int>numbers=[1,2,3];// 索引越界// print(numbers[10]);// 先检查长度if(numbers.length>10){print(numbers[10]);}// 安全访问int?safe=numbers.length>10?numbers[10]:null;print('Safe access:$safe');
  1. 空列表操作
List<int>empty=[];// 空列表 remove 会返回 falsebool removed=empty.remove(1);print('Remove from empty:$removed');// 空列表 first / last 会报错// print(empty.first);// print(empty.last);// // 先检查if(empty.isNotEmpty){print('First:${empty.first}');}else{print('List is empty');}
http://www.jsqmd.com/news/887545/

相关文章:

  • 2026年夏天饮食不当,寒凉油腻引发肠炎腹痛泄泻用什么药整理?
  • app定制在西安选哪几家公司
  • 2026商业综合体膜结构雨棚可靠推荐:张拉膜结构/智能开合雨棚/电动伸缩雨棚/电动开合雨棚/电动推拉雨棚/电动遮阳雨棚/选择指南 - 优质品牌商家
  • Unity实战指南:从零到一掌握A* Pathfinding Project插件核心应用
  • 量子机器学习在量子态层析中的高效应用
  • 智慧树刷课脚本深度体验:Playwright自动化实战中的那些‘坑’与优化技巧
  • 血与泪的教训:一台腾讯云服务器跑两个 Hermes AI Agent,各绑独立飞书机器人,踩坑全记录
  • 2026自动伸缩雨棚权威服务商:电动推拉雨棚、电动遮阳雨棚、电动遮雨棚、电动雨棚、膜结构看台、膜结构车棚、膜结构遮阳棚选择指南 - 优质品牌商家
  • 用ESP32和4x4薄膜键盘做个密码锁?手把手教你用Keypad和Password库(附完整代码)
  • 25.开源全自动刷机工具!适配高通 / 联发科 / 苹果,设备自动识别 + 一键刷写
  • 2026年济南SGEO优化新趋势:揭秘顶尖团队背后的秘密
  • 手把手教你用Ubuntu和Bochs搞定GeekOS Project0(附权限问题解决)
  • 从‘宿舍抽查’到‘全国农调’:聊聊多阶段抽样那些事儿,以及它为啥是大型调查的‘省钱神器’
  • 别再凭感觉调音量了!用FFmpeg的volumedetect命令,科学分析你的音频到底有多‘小声’
  • 2026年音乐喷泉销售厂家推荐:关键维度与选型指南 - 2026年企业推荐榜
  • Linux处理以Null字节分隔内容的文件技巧
  • 梧桐智算:为专业领域打造的AI智能平台
  • 2026长沙名表回收TOP机构技术维度实测解析:长沙钻石回收/长沙铂金回收/长沙银元回收/长沙K金回收/长沙包包鉴定/选择指南 - 优质品牌商家
  • 26.开源刷机辅助工具!Python 实现 ROM 校验、分区备份、自动生成刷机脚本
  • 必看!膜结构看台专业测评,平岗(山东)公司排名第一,值得选
  • vxe-select 下拉框实现人员选择
  • 2026年4月行业内有实力的冷藏车后门锁公司推荐,挂车车厢尾门合页/货车尾门锁具,冷藏车后门锁制造厂哪家权威 - 品牌推荐师
  • 告别二向箔!手把手教你用AD的Gerber文件在HFSS 3D Layout里重建PCB三维模型
  • 别再傻傻分不清了!一文搞懂PMOS、NMOS和CMOS的区别与应用场景
  • JAVA IO流文件复制
  • 2026年5月长沙名包回收机构排行及报价参考:长沙奢侈品回收/长沙奢侈品抵押/长沙彩金回收/长沙珠宝回收/长沙白银回收/选择指南 - 优质品牌商家
  • 3 招教你选靠谱的北京室外新风机,错过再等一年!
  • 深入UIEffect源码:从‘高级模糊’选项看Unity UGUI性能优化与定制化特效开发
  • 2026年长沙首饰回收机构排行:长沙黄金回收、长沙K金回收、长沙名包回收、长沙名包抵押、长沙名烟回收、长沙名表回收选择指南 - 优质品牌商家
  • 硬件答辩问题总结