内建类型
- Dart 语言支持以下内建类型:
- Number
- String
- Boolean
- List (也被称为 Array)
- Map
- Set
- Rune (用于在字符串中表示 Unicode 字符)
- Symbol
这些类型都可以被初始化为字面量。 例如, ‘this is a string’ 是一个字符串的字面量, true 是一个布尔的字面量。
因为在 Dart 所有的变量终究是一个对象(一个类的实例), 所以变量可以使用 构造涵数 进行初始化。 一些内建类型拥有自己的构造函数。 例如, 通过 Map() 来构造一个 map 变量。
String
- 单、双引号一致;
- 三个单/双引号里面可以写多行字符串;
- 字符串拼接:+
- 字符串模版:$ {}
dart
1 | void main() { |
Number
特点
- int: 整形; double: 浮点型;
- double被赋值为整形的时候,dart会自动在后面加上.0;
- + - * / ~/ %
dart
1 | void main() { |
方法
int 和 double 都是 num. 的亚类型。 num 类型包括基本运算 +, -, /, 和 *, 以及 abs(), ceil(), 和 floor(), 等函数方法。 (按位运算符,例如»,定义在 int 类中。) 如果 num 及其亚类型找不到你想要的方法, 尝试查找使用 dart:math 库。
与字符串之间的转换
dart
1 | // String -> int |
Boolean
- 值:true, false;
- 条件判断;
dart
1 | void main() { |
List
数组/集合类型
- 定义List的方式: 字面量、构造函数
- 声明不可变列表
- 范型定义List指定类型
常用属性
- length 长度
- reversed 翻转
- isEmpty 是否为空
- isNotEmpty 是否不为空
常用方法
- add 增加
- addAll 拼接数组
- indexOf 查找 传入具体值
- remove 删除 传入具体值
- removeAt 删除 传入索引值
- fillRange 修改
- insert(index, value) 指定位置插入
- insertAll(index, list) 指定位置插入List
- toList 其他类型转换成List
- join List转换成字符串
- split 字符串转换成List
- forEach
- map
- where 筛选
- any
- every
dart1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40void main() {
var list1 = [1, 2, 'dart'];
print(list1);
list1[1] = 3;
print(list1);
// 不可变列表
var list2 = const [1, 2, 3];
// list2[1] = 4;
var list3 = new List();
var list = ['hello', 'dart'];
list.add('aaa');
list.insert(1, 'java');
print(list);
var list4 = new List<String>();
list4.add('张三');
// list4.add(1);
// reverse
print(list1.reversed.toList());
list1.addAll(['香蕉', '苹果']);
// 遍历
print('for loop ------');
for (int i = 0; i < list1.length; i++) {
print(list1[i]);
}
print('for in loop ------');
for ( var o in list1) {
print(o);
}
print('foreach loop ------');
list1.forEach((val){
print(val);
});
}在 List 字面量之前添加 const 关键字,可以定义 List 类型的编译时常量:
dart1
2var constantList = const [1, 2, 3];
// constantList[1] = 1; // 取消注释会引起错误。
Set
- 不重复的list
- Set是没有顺序的集合,不能通过索引去获取值
- Map 字面量语法同 Set 字面量语法非常相似。 因为先有的 Map 字母量语法,所以 {} 默认是 Map 类型。 如果忘记在 {} 上注释类型或赋值到一个未声明类型的变量上, 那么 Dart 会创建一个类型为 Map<dynamic, dynamic> 的对象
dart
1 | var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'}; |
Map
字典类型
- key类型不限:字符串、数值、布偶、数组、字典
- 两种声明方式:字面量、构造函数
- 不可变Map
- Map取值只能用[]
常用属性
- keys 获取所有的key值
- values 获取所有的value值
- isEmpty 是否为空
- inNotEmpty 是否不为空
常用方法
- remove(key) 删除指定key的数据
- addAll 合并字典 增加属性
- containsValue 查看字典是否有某个值
- forEach
- map
- where
- any
- every
示例代码
dart
1 | void main() { |
some tips
类型判断
- 用is来判断类型
dart
1 | void main() { |
dynamic、var、Object三者区别
- dynamic:动态类型,运行过程中数据类型可以修改
- var:动态类型,运行过程中数据类型不可修改,只能是第一次推断的数据类型
- Object:静态检查,只能调用Object上有的方法
dart
1 | void main() { |
枚举
枚举类型也称为 enumerations 或 enums , 是一种特殊的类,用于表示数量固定的常量值
使用枚举的 values 常量, 获取所有枚举值列表
dart
1 | void main() { |