数据类型
Dart 中的一切皆是对象,包括数字、布尔值、函数等,每个对象都是一个实例,它们都继承于 Object,所以它们的默认值也就是 null
在 Dart 主要有:
- 字符串类型(String)
- 数字类型(int、double)
- 布尔类型(bool)
- 集合类型(List,Set,Map)
- Runes 类和 Symbols 类型(后两个用的并不太多)
字符串类型(String)
使用
''
或""
创建,使用带有单引号或双引号的三重引号可以创建多行字符串
```js
// 双引号字符串
var str1 = "单行字符串";// 单引号字符串
var str2 = '单行字符串';
var str3 = '''
多行字符串
多行字符串
多行字符串
''';
```
字符串和其他变量或表达式拼接: 使用
${expression}
,如果表达式是一个标识符,那么{}
可以省略var name = 'dart'; var version = '2.1.7'; print('language is ${name}, version is $version'); //language is dart, version is 2.1.7
字符串拼接,使用
+
var str4 = "Hello"; var str5 = "world"; var str6 = str4 + ' ' + str5 + ' '; print(str6); //Hello world
数字类型(int、double)
- Number 类型有量两种分别是
int
和double
```js
var height = 180;
print(height.runtimeType); //int
var weight = 70.0;
print(weight.runtimeType); //double
```
字符串和数字的转化
字符串转数字
// String -> int var height = int.parse("180"); print(height.runtimeType); //int // String -> double var weight = double.parse("70.0"); print(weight.runtimeType); //double
数字转字符串
// int -> String var height = 180.toString(); print(height.runtimeType); //String // double -> String var weight = 70.0.toString(); print(weight.runtimeType); //String
保留小数
var value = 1.234567; print(value.toStringAsFixed(2)); //1.23
布尔类型(bool)
bool 类型是编译时常量,分别是:
true
false
集合类型(List,Set,Map)
List
List 的创建
根据类型推导的 List
var list = [1, 2, 3, 4];
明确类型的 List
List<int> arr = [1, 2, 3, 4];
List 常用属性
var list = ["A", "B", "C", "D"]; //获取list长度 print(list.length); //4 //list是否为空 print(list.isEmpty); //false //list是否有元素 print(list.isNotEmpty); //true //翻转 print(list.reversed); //(D, C, B, A) //查看List中是否存在指定元素 print(list.contains("A")); //true
List 常用方法
增
- 添加新元素到list
var list = ["A", "B", "C", "D"]; list.add("E"); print(list); //[A, B, C, D, E]
将另外一个list拼接到当前的list后面
var list = ["A", "B", "C", "D"]; var arr = ["X", "Y", "Z"]; list.addAll(arr); print(list); //[A, B, C, D, E, X, Y, Z]
简写(使用扩展操作符(
...
))var arr = ["X", "Y", "Z"]; var list = ["A", "B", "C", "D", ...arr]; print(list); //[A, B, C, D, E, X, Y, Z]
- 添加新元素到list
删
删除指定元素
var list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; list.removeAt(5); print(list); //[1, 2, 3, 4, 6, 7, 8, 9]
清除所有元素
list.clear(); print(list); //[]
改
- 使用setRange方法
//将list中的第一个参数到第二个参数之前的元素替换为mList中的元素 var list = ["A", "B", "C", "D", "E", "F", "G"]; var mList = ["x", "y", "z"]; list.setRange(2, 4, mList); print(list); //[A, B, x, y, E, F, G]
- 使用setRange方法
查
var list = ["A", "BB", "C", "DD", "E", "FF", "G"]; //获取第一个元素 print(list.first); //A //获取最后一个元素 print(list.last); //G //查看List中是否存在指定元素 print(list.contains("C")); //true
遍历
var list = ["A", "B", "C", "D"]; for (var i = 0; i < list.length; i++) { print(list[i]); } list.forEach((element) { print(element); }); for (var item in list) { print(item); }
Set
- 使用
{}
创建 Set,是一个元素唯一的无序的集合类型 - 各个属性、方法同 List
Map
使用
{}
创建 Map// 可变Map Map map = { "key": "value"}; var map = { "key": "value"}; // 不可变Map var map = const { "key": "value"}; // 设置键值类型 Map<String, Object> mMap = { }; mMap["str"] = 123; mMap["num"] = "123";
常用属性方法
var map = { }; map["name"] = "小明"; map["age"] = 12; print(map); //{name: 小明, age: 12} // 键值对个数 print(map.length); //2 // 是否为空 print(map.isEmpty); //false // 所有key print(map.keys); //(name, age) // 所有value print(map.values); //(小明, 12) // 是否包含address print(map.containsKey("address")); //false // 删除键值对 map.remove("age"); print(map); //{name: 小明} // 修改键值对 map["age"] = 18; print(map); //{name: 小明, age: 18}