前言
本篇整理笔者在学习Dart数据类型中所接触到的知识
首先,明确Dart中含有的数据类型如下
- 数值型(int、double)
- 字符串型(String)
- 布尔值(Boolean)
- 列表(List)
- 集合(set)
- 映射(map)
- 符文(rune)
- 符号(Symbol)
最后两种符文和符号并不常用,因此本篇不做介绍
一、基础数据类型
数值类型
Dart 中数值类型用于表示数字文字,Dart 中的数值类型分为整数和浮点数两种,整数值不大于64位, 具体取决于平台。
可以通过int/double显式声明一个数值类型
int a = 10;
int b = 0xDEADBEEF;
double c = 3.14;
double d = 1.42e5;
同时,Dart作为脚本类型语言,你也可以使用var类型声明,让编译器自行推断数据类型
var a = 88;
var b = 5.65;
字符串型
Dart 字符串是一组 UTF-16 单元序列,用于存储一些姓名地址等信息,并用单引号、双引号、三引号进行包裹。
可以通过String类型显式声明字符串
String str1 = 'hello';
String str2 = "hello";
字符串拼接方法
String str1 = 'hello';
String str2 = "hello";
String str3=str1+" "+str2
String str4="$str1 $str2"
String str5="${
str1.toUpperCase()}"
$在这里表示取str1和str2的值,下面的方法和上面的方法产生的拼接效果一致,有点像ES6的语法
当然也可以通过var隐式声明,让程序自行将变量推断成字符串类型
var s1="111";
布尔值(Boolean)
Dart 只有字面量 true / false 是布尔类型,这两个对象都是编译时常量。
显式声明
bool a = true;
bool b = false;
隐式声明
var c = true;
列表(List)
其实 list 就是编程语言中常见的数据类型 Array(数组),但在 Dart 中用 List 对象表示数组。
可以通过隐式声明一个List,其中的数据类型可以不做限制
var l1=[1,"haha",true]
也可以通过声明来确定List中的数据类型,并进行添加
List<int> arr=[1,2,3];
List arr2=<int>[1,2,3,4];
arr.append(4);
arr2.append(5);
在前半部分声明或者后半部分声明都可以
也可以通过List.filled()方法生成新的List,需要注意的是,该种方法产生的list不可以更改长度,且默认要对所有位置上的元素进行初始化
List a = new List.filled(10, 1);
print(a);//[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
需要注意的是,在Flutter 2.x的版本中,仍然可以通过var ls = new List();类new关键字的方法对List进行初始化,但是在Flutter 3.x版本中,该特性已经得到废除,故本篇文章不做介绍
集合(set)
顾名思义,其实就是一组同类型数据的集合。在 Dart 中 Set 是一个元素唯一且无需的集合。 Dart 为 Set 提供了 Set 字面量和 Set 类型。
可以通过set关键字来定义一个集合
Set <String> cls = {
"小王", "小杨"};
也可以通过var关键字隐式创建一个集合
var cls = {
true,false};
需要注意的是,集合set不能进行空创建,因为空创建的格式会直接创建映射map,类似下方这种
var obj = {
};
这里创建的是空Map对象
映射(map)
不严格地说,你可以把它看作为 Object / JSON 。 Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次。
var person = {
// Key: Value
'name': '杨莹',
'age': '18',
'eat': 'true'
};
var nobleGases = {
// Key: Value
2: 'react',
10: 'vue',
18: 'spring boot'
};
print(person);// {name: 杨莹, age: 18, eat: true}
print(nobleGases);// {2: helium, 10: neon, 18: argon}
Dart 会将 person 的类型推断为 Map<String, String>,nobleGases 的类型推断为 Map<int, String> 。 如果你尝试在上面的 map 中添加错误类型,那么分析器或者运行时会引发错误。
也可以通过Map构造函数进行创建
var obj = Map();
obj['name'] = '杨莹';
obj['age'] = 18;
print(obj);// {name: 杨莹, age: 18}
二、总结
以上是笔者关于Dart基本数据类型的整理,欢迎补充