04. Dart数据类型
Dart 语言支持以下类型 :
- 数字
- 字符串
- 布尔
- 列表(类似于数组)
- 集合
- 映射
- 符文(用于表示字符串中的 Unicode 字符)
- 符号
1. 数字类型
Dart 中的数字类型用于表示数字文字。Dart 中的数字类型有两种类型 –
- 整数 – 整数值表示非小数值,即没有小数点的数值。例如,
10是整数。使用int关键字表示整数文字。 - 双精度数 – Dart 还支持小数数值,即带小数点的值。Dart 中的 Double 数据类型表示 64 位(双精度)浮点数。例如,
10.10。关键字double用于表示浮点文字。
int 必须是整型
void main() {
int a = 123;
a = 45;
print(a);
}
如果数字包含小数,则为双精度数。
void main() {
double b = 23.5;
}
从 Dart 2.1 开始,必要时整数文字会自动转换为双精度数:
void main() {
double b = 23.5;
b = 24;
print(b);
}
2. 字符串
字符串代表一系列字符。例如,如果要存储一些数据,如名称,地址等,则应使用字符串数据类型。Dart 字符串是一系列 UTF-16 代码单元。符文用于表示 UTF-32 代码单元序列。
关键字 String 用于表示字符串文字,字符串值嵌入单引号或双引号中。因此可以使用单引号或双引号来创建字符串:
var s1 = 'Single quotes work well for string literals.'; var s2 = "Double quotes work just as well."; var s3 = 'It\'s easy to escape the string delimiter.'; var s4 = "It's even easier to use the other delimiter.";
可以使用${expression}将表达式的值放在字符串中。如果表达式是标识符,则可以跳过{}。为了获得对应于对象的字符串,Dart 调用对象的toString()方法。
void main() {
String str1 = '你好';
String str2 = 'Dart';
print("$str1 $str2");
}
使用带有单引号或双引号的三引号创建多行字符串:
void main() {
String str1 = '''this is str1
this is str1
this is str1
''';
String str2 = """
this is str1
this is str1
this is str1
""";
}
3. 布尔类型
要表示布尔值,可使用 Dart 中的 bool 类型。只有两个对象具有 bool 类型:boolean 文字:true 和 false,它们都是编译时常量。
void main() {
var flag = true;
if (flag) {
print('真');
} else {
print('假');
}
}
4. 列表类型
几乎每种编程语言中最常见的集合是数组或有序的对象组。在 Dart 中,数组是List对象,因此大多数人将它称为列表。
Dart 列表文字看起来像 JavaScript 数组文字。下面是一个简单的 Dart 列表:
var list = [1, 2, 3];
列表使用从0开始的索引,其中0是第一个元素的索引,list.length-1是最后一个元素的索引。可以获得列表的长度并像在 JavaScript 中一样引用列表元素:
void main() {
var list = [1, 2, 3];
print(list.length == 3);
print(list[1] == 2);
list[1] = 1;
print(list[1] == 1);
}
第二种定义 List 的方式
void main() {
var l2 = new List();
l2.add('张三');
l2.add('李四');
l2.add('王五');
print(l2);
print(l2[2]);
}
定义 List 指定类型
void main() {
var l3 = new List<String>();
l3.add('张三');
// l3.add(123);
print(l3);
}
要创建一个编译时常量的列表,请在列表文字之前添加const:
var constantList = const [1, 2, 3]; // constantList[1] = 1; // Uncommenting this causes an error.
Dart 2.3 引入了扩展运算符(...)和空值感知扩展运算符(...?),它提供了一种将多个元素插入集合的简洁方法。
例如,使用扩展运算符(...)将列表的所有元素插入另一个列表:
var list = [1, 2, 3]; var list2 = [0, ...list]; print(list2.length == 4);
如果扩展运算符右侧的表达式可能为null,则可以通过使用支持null的扩展运算符(...?)来避免异常:
var list; var list2 = [0, ...?list]; print(list2.length == 1);
5. 集合
Dart 中的Set是无序的唯一项的集合。Dart 支持由Set文字和Set类型提供的集合。下是一个简单的 Dart 集,使用set文字创建:
var mybjs = {'mybj123.com', 'chlorine', 'bromine', 'iodine', 'astatine'};
要创建一个空集合,请使用前面带有类型参数的{},或者将{}赋给类型为Set的变量:
var names = <String>{};
Set<String> names = {}; // This works, too.
//var names = {}; // Creates a map, not a set.
使用add()或addAll()方法将项添加到现有集合:
var elements = <String>{};
elements.add('mybj');
elements.addAll(mybjs);
使用.length来获取集合中的项目数量:
var elements = <String>{};
elements.add('mybj');
elements.addAll(mybjs);
print(elements.length == 5);
要创建一个编译时常量的集合,请在 set 文字之前添加const:
final constantSet = const {
'mybj',
'chlorine',
'bromine',
'iodine',
'astatine',
};
6. 映射
通常映射是关联键和值的对象。键和值都可以是任何类型的对象。每个键只出现一次,但可以多次使用相同的值。Dart 支持由映射文字和 Map 类型提供的映射。
下面是几个简单的 Dart 映射,使用映射文字创建:
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};
可以使用 Map 构造函数创建相同的对象:
var gifts = Map(); gifts['first'] = 'partridge'; gifts['second'] = 'turtledoves'; gifts['fifth'] = 'golden rings'; var nobleGases = Map(); nobleGases[2] = 'helium'; nobleGases[10] = 'neon'; nobleGases[18] = 'argon';
像在 JavaScript 中一样,将新的键值对添加到现有映射:
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
以与在 JavaScript 中相同的方式从映射中检索值:
var gifts = {'first': 'partridge'};
print(gifts['first'] == 'partridge');
如果查找不在映射中的键,则将返回null:
var gifts = {'first': 'partridge'};
print(gifts['fifth'] == null);
使用.length来获取映射中键值对的数量:
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
print(gifts.length == 2);
要创建一个编译时常量的映射,请在 map 文字之前添加const关键字:
final constantMap = const {
2: 'helium',
10: 'neon',
18: 'argon',
};
7. 符文
在 Dart 中,符文是字符串的 UTF-32 代码点。
Unicode 为世界上所有书写系统中使用的每个字母,数字和符号定义唯一的数值。由于 Dart 字符串是UTF-16代码单元的序列,因此在字符串中表示 32 位 Unicode 值需要特殊语法。
String类有几个属性可用于提取符文信息。codeUnitAt和codeUnit属性返回 16 位代码单元。使用runes属性获取字符串的符文。
以下示例说明了符文,16 位代码单元和 32 位代码点之间的关系。
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = new Runes(
'\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
print(new String.fromCharCodes)
8. 符号
Symbol对象表示 Dart 程序中声明的运算符或标识符。可能永远不需要使用符号,但它们对于按名称引用标识符的 API 非常有用,因为缩小会更改标识符名称而不会更改标识符符号。
要获取标识符的符号,请使用符号文字,它只是#后跟标识符:
#radix #bar
符号文字是编译时常量。
以上关于04. Dart数据类型的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 04. Dart数据类型

微信
支付宝