一、数字类型 1、基本使用 Dart 提供了 int 和 double 两种主要的数字类型,以及 num 作为它们的父类型 类型 说明 int 表示整数 double 表示双精度浮点数(小数) num 可以同时表示整数和浮点数
int intValue= 42 ; double doubleValue= 3.14 ; num numInt= 100 ; num numDouble= 99.99 ; 算术运算 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自增自减 int counter= 5 ; counter++ ; print ( 'After increment: $ counter ' ) ; counter-- ; print ( 'After decrement: $ counter ' ) ; # 输出结果 After increment: 6 After decrement: 52、数学运算库 Dart 在dart:math库中提供了丰富的数学函数 import 'dart:math' ; void main ( ) { // 幂运算 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 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处理无效输入 try { int invalid= int. parse ( 'abc' ) ; } catch ( e) { print ( 'Parse error: $ e ' ) ; } # 输出结果 Parse error: FormatException: Invalid radix-10 number (at character 1) abc ^安全转换 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 转 double double fromInt= intValue. toDouble ( ) ; print ( 'Int to Double: $ fromInt ' ) ; // double 转 int (截断小数部分) int fromDouble= doubleValue. toInt ( ) ; print ( 'Double to Int: $ fromDouble ' ) ; // 四舍五入转 int int 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: 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 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.05、注意事项 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、基本使用 创建列表 // 创建整数列表 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: []访问列表元素 List < int> numbers= [ 10 , 20 , 30 , 40 , 50 ] ; // 通过索引访问 print ( 'First element: ${ numbers[ 0 ] } ' ) ; print ( 'Third element: ${ numbers[ 2 ] } ' ) ; // 使用 first 和 last print ( 'First: ${ numbers. first } ' ) ; print ( 'Last: ${ numbers. last } ' ) ; # 输出结果 First element: 10 Third element: 30 First: 10 Last: 50修改列表元素 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]添加元素 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]删除元素 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: []查找元素 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: 42、创建特殊列表 固定长度列表 // 创建固定长度列表,填充默认值 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]生成列表 // 使用 generate 生成列表 List < int> generated= List . generate ( 5 , ( index) = > index* 2 ) ; print ( 'Generated: $ generated ' ) ; // 生成 0 ~ 9 List < 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]从其他集合创建 // 从 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 ' ) ; // 使用 of List < 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、注意事项 列表索引越界 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 ' ) ; 空列表操作 List < int> empty= [ ] ; // 空列表 remove 会返回 false bool 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' ) ; }