一、数字类型1、基本使用Dart 提供了 int 和 double 两种主要的数字类型以及 num 作为它们的父类型类型说明int表示整数double表示双精度浮点数小数num可以同时表示整数和浮点数int intValue42;double doubleValue3.14;num numInt100;num numDouble99.99;算术运算int sum105;int difference10-3;int product4*7;double quotient15/3;int remainder17%5;// 取余int quotientInt17~/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自增自减int counter5;counter;print(After increment:$counter);counter--;print(After decrement:$counter);# 输出结果 After increment: 6 After decrement: 52、数学运算库Dart 在dart:math库中提供了丰富的数学函数importdart: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字符串转数字基本转换int intValueint.parse(42);print(Parsed int:$intValue);double doubleValuedouble.parse(3.14);print(Parsed double:$doubleValue);# 输出结果 Parsed int: 42 Parsed double: 3.14处理无效输入try{int invalidint.parse(abc);}catch(e){print(Parse error:$e);}# 输出结果 Parse error: FormatException: Invalid radix-10 number (at character 1) abc ^安全转换int?result1int.tryParse(123);print(result1)int?result2int.tryParse(abc);print(result2);# 输出结果 Safe parsed int: 123 Safe parsed invalid: null2数字转字符串int num42;double decimal3.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.14163int 与 double 互转int intValue10;double doubleValue3.14;double doubleValue23.6;// int 转 doubledouble fromIntintValue.toDouble();print(Int to Double:$fromInt);// double 转 int (截断小数部分)int fromDoubledoubleValue.toInt();print(Double to Int:$fromDouble);// 四舍五入转 intint roundeddoubleValue2.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: 44、常用属性// 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 d3.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.05、注意事项int 和 double 不能直接运算需要先转换为相同类型。// 错误int result103.14;// 正确double result10.toDouble()3.14;二、布尔类型bool isActivetrue;bool isFinishedfalse;if(isActive){print(The system is active);}else{print(The system is inactive);}三、列表类型1、基本使用创建列表// 创建整数列表Listintnumbers[1,2,3,4,5];print(Numbers:$numbers);// 创建字符串列表ListStringfruits[Apple,Banana,Orange];print(Fruits:$fruits);// 创建动态类型列表Listdynamicmixed[1,two,3.0,true];print(Mixed:$mixed);// 创建空列表ListintemptyList[];print(Empty List:$emptyList);# 输出结果 Numbers: [1, 2, 3, 4, 5] Fruits: [Apple, Banana, Orange] Mixed: [1, two, 3.0, true] Empty List: []访问列表元素Listintnumbers[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修改列表元素Listintnumbers[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]添加元素Listintnumbers[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]删除元素Listintnumbers[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)n4);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: []查找元素Listintnumbers[1,2,3,4,5,6];ListintwithDuplicates[1,2,3,2,3,2];// 检查是否包含元素bool hasThreenumbers.contains(3);print(Contains 3:$hasThree);// 查找元素的索引int indexnumbers.indexOf(3);print(Index of 3:$index);// 查找最后一次出现的索引int lastIndexwithDuplicates.lastIndexOf(2);print(Last index of 2:$lastIndex);// 查找满足条件的第一个元素int?foundnumbers.firstWhere((n)n3);print(First 3:$found);# 输出结果 Contains 3: true Index of 3: 2 Last index of 2: 5 First 3: 42、创建特殊列表固定长度列表// 创建固定长度列表填充默认值ListintfixedLengthList.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]生成列表// 使用 generate 生成列表ListintgeneratedList.generate(5,(index)index*2);print(Generated:$generated);// 生成 0 ~ 9ListintrangeList.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]从其他集合创建// 从 Iterable 创建ListintfromIterableList.from([1,2,3,4,5]);print(From Iterable:$fromIterable);// 从 Set 创建Setintset{1,2,3,2,1};ListintfromSetset.toList();print(From Set:$fromSet);// 使用 ofListStringofListList.of([a,b,c]);print(From of:$ofList);// 不可变列表ListintimmutableList.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、注意事项列表索引越界Listintnumbers[1,2,3];// 索引越界// print(numbers[10]);// 先检查长度if(numbers.length10){print(numbers[10]);}// 安全访问int?safenumbers.length10?numbers[10]:null;print(Safe access:$safe);空列表操作Listintempty[];// 空列表 remove 会返回 falsebool removedempty.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);}
Dart - 数字类型、布尔类型、列表类型
发布时间:2026/5/26 2:52:10
一、数字类型1、基本使用Dart 提供了 int 和 double 两种主要的数字类型以及 num 作为它们的父类型类型说明int表示整数double表示双精度浮点数小数num可以同时表示整数和浮点数int intValue42;double doubleValue3.14;num numInt100;num numDouble99.99;算术运算int sum105;int difference10-3;int product4*7;double quotient15/3;int remainder17%5;// 取余int quotientInt17~/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自增自减int counter5;counter;print(After increment:$counter);counter--;print(After decrement:$counter);# 输出结果 After increment: 6 After decrement: 52、数学运算库Dart 在dart:math库中提供了丰富的数学函数importdart: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字符串转数字基本转换int intValueint.parse(42);print(Parsed int:$intValue);double doubleValuedouble.parse(3.14);print(Parsed double:$doubleValue);# 输出结果 Parsed int: 42 Parsed double: 3.14处理无效输入try{int invalidint.parse(abc);}catch(e){print(Parse error:$e);}# 输出结果 Parse error: FormatException: Invalid radix-10 number (at character 1) abc ^安全转换int?result1int.tryParse(123);print(result1)int?result2int.tryParse(abc);print(result2);# 输出结果 Safe parsed int: 123 Safe parsed invalid: null2数字转字符串int num42;double decimal3.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.14163int 与 double 互转int intValue10;double doubleValue3.14;double doubleValue23.6;// int 转 doubledouble fromIntintValue.toDouble();print(Int to Double:$fromInt);// double 转 int (截断小数部分)int fromDoubledoubleValue.toInt();print(Double to Int:$fromDouble);// 四舍五入转 intint roundeddoubleValue2.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: 44、常用属性// 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 d3.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.05、注意事项int 和 double 不能直接运算需要先转换为相同类型。// 错误int result103.14;// 正确double result10.toDouble()3.14;二、布尔类型bool isActivetrue;bool isFinishedfalse;if(isActive){print(The system is active);}else{print(The system is inactive);}三、列表类型1、基本使用创建列表// 创建整数列表Listintnumbers[1,2,3,4,5];print(Numbers:$numbers);// 创建字符串列表ListStringfruits[Apple,Banana,Orange];print(Fruits:$fruits);// 创建动态类型列表Listdynamicmixed[1,two,3.0,true];print(Mixed:$mixed);// 创建空列表ListintemptyList[];print(Empty List:$emptyList);# 输出结果 Numbers: [1, 2, 3, 4, 5] Fruits: [Apple, Banana, Orange] Mixed: [1, two, 3.0, true] Empty List: []访问列表元素Listintnumbers[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修改列表元素Listintnumbers[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]添加元素Listintnumbers[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]删除元素Listintnumbers[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)n4);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: []查找元素Listintnumbers[1,2,3,4,5,6];ListintwithDuplicates[1,2,3,2,3,2];// 检查是否包含元素bool hasThreenumbers.contains(3);print(Contains 3:$hasThree);// 查找元素的索引int indexnumbers.indexOf(3);print(Index of 3:$index);// 查找最后一次出现的索引int lastIndexwithDuplicates.lastIndexOf(2);print(Last index of 2:$lastIndex);// 查找满足条件的第一个元素int?foundnumbers.firstWhere((n)n3);print(First 3:$found);# 输出结果 Contains 3: true Index of 3: 2 Last index of 2: 5 First 3: 42、创建特殊列表固定长度列表// 创建固定长度列表填充默认值ListintfixedLengthList.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]生成列表// 使用 generate 生成列表ListintgeneratedList.generate(5,(index)index*2);print(Generated:$generated);// 生成 0 ~ 9ListintrangeList.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]从其他集合创建// 从 Iterable 创建ListintfromIterableList.from([1,2,3,4,5]);print(From Iterable:$fromIterable);// 从 Set 创建Setintset{1,2,3,2,1};ListintfromSetset.toList();print(From Set:$fromSet);// 使用 ofListStringofListList.of([a,b,c]);print(From of:$ofList);// 不可变列表ListintimmutableList.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、注意事项列表索引越界Listintnumbers[1,2,3];// 索引越界// print(numbers[10]);// 先检查长度if(numbers.length10){print(numbers[10]);}// 安全访问int?safenumbers.length10?numbers[10]:null;print(Safe access:$safe);空列表操作Listintempty[];// 空列表 remove 会返回 falsebool removedempty.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);}