Dart数据类型

这个笔记写下了Dart语言中一些常见的数据类型。

Number

  • Dart的数字有三个关键字
    • num(整数或小数)
    • int表示整数,声明变量时就不能输入浮点数,不然会报错。
    • double表示浮点数,即便声明变量时给的是整数,输出也是3.0之类。

一些少见的类型转换

1
2
3
4
double a=3.14159;
double b;
b=a.round();//保留整数的四舍五入
b=a.toStringAsFixed(4);//保留四位小数的四舍五入
1
2
3
4
5
int a=10;
double b;
b=a.compareTo(10);//b为0则相同,1大于,-1小于
b=a.remainder(4);//结果为a除以4的余数
b=a.gcd(19);//结果为a和19的最大公约数

String

  • 声明字符串
    • 单引号、双引号
    • 三个引号可声明带换行符的字符串
  • 正则表达式
    • RegExp(r’正则表达式’)
  • 常见API
    • replaceAll(str1,str2); 支持正则替换,即str1可以用正则表达式
    • isEmpty
    • isNotEmpty
    • contains(str) 查找字符串
    • indexOf(str) 定位字符串

Boolean

  • 关键字为bool
  • 值只有true和false
  • 使用变量进行条件语句的判断时,尽量使用显式的判断,如if(a==0),而不是if(!a),因为dart中,变量的值不会进行隐式转换。

List

  • Dart中的数组,由List对象表示。有两种声明方式。
    • 字面量方式
      • List list=[] //不限数据类型
      • List list=<int>[] //指定数据类型
    • 构造函数方式
      • List list=new List.empty(growable:true)//不限制长度的空列表
      • List list=new List.filled(3,0)//前一个参数指定长度,后一个指定填充值,这里创建出来为[0,0,0]
  • 常见API
    • addAll([x,y,…,z ])
    • remove(element)
    • removeAt(int i) 删除指定下标的元素
    • insert(index,element) 在指定下标的位置添加元素
    • clear( ) 清空
    • join(str) 将列表中的元素用str连接合并起来
  • 遍历List
    • forEach()
    • map()
      • var newList=nums.map((e) {
        return e*e;
        });
    • where() 返回包含满足要求的元素的新列表
    • any() 有一个元素满足要求就返回true
    • every() 都满足要求才返回true

Set

  • set是无序的,元素唯一的集合
  • set同样有字面量和构造函数两种声明方式,字面量用大括号{ }
  • 对List变量使用toSet( )方法,将重复元素去除
  • 交集:map1.intersection(map2)
  • 并集:map1.union(map2)
  • 差集:map1.difference(map2)
  • 第一个元素:map1.first
  • 最后一个元素:map1.last

Map

  • Map是无序的键值对映射。又称哈希或字典。
  • 声明方式
    • var map={key1:value1,…};
    • var map=new Map( );
    • map[‘key’]=value;
  • 常用API
    • map1.containsKey(str) 判断key存在与否
    • map1.putIfAbsent(key,( )->value ) key不存在则赋值
    • map1.keys
    • map1.values
    • map1.removeWhere( ) 按条件删除

其它数据类型

  • Runes (符文) Runes对象是一个32位的字符对象。可以把文字转换成符号表情或者特定的文字。CopyChar
  • Symbol 在Dart中用#开头来表示的标识符
  • dynamic 动态数据类型