1. 明确声明(Explicit)
- 明确声明变量方式 ,格式:变量类型 变量名称 = 赋值
代码示例如下:
String name = 'wang';
int age = 18;
double height = 1.88;
print('${name}, ${age}, ${height}');
// 注意事项: 定义的变量可以修改值, 但是不能赋值其他类型
String content = 'Hello Dart';
content = 'Hello World'; // 正确的
// content = 111; // 错误的, 将一个int值赋值给一个String变量
2. 类型推导(Type Inference)
- 类型推导声明变量的方式, 格式: var/dynamic/const/final 变量名称 = 赋值
2.1. var的使用
var的使用示例:
var name = 'wang';
// runtimeType用于获取变量当前的类型
print(name.runtimeType); // String
- 变量仅存储对象引用,这里的变量是name存储了一个String类型的对象引用。 wang是这个String类型对象的值,name变量的类型被推断为String。
2.2. dynamic的使用
dynamic name = 'wang';
print(name2.runtimeType); // String
name = 18;
print(name2.runtimeType); // int
2.3 final const的使用
- final和const都是用于定义常量的, 定义之后值都不可以修改
final name = 'wang';
name = 'james'; // 错误
const age = 18;
age = 20; // 错误
- const在赋值时, 赋值的内容必须是在编译期间就确定下来的
- final在赋值时, 可以动态获取 比如赋值一个函数
代码示例如下:
// const是不可以赋值为DateTime.now()
const time = DateTime.now(); // 错误 因为要执行函数才能获取到值
// final一旦被赋值后就有确定的结果, 不会再次赋值
final time = DateTime.now();
print(time);
sleep(Duration(seconds: 5));
print(time); // 两次time值相同
ps: 实例变量可以是final 类型但不能是const类型。 必须在构造函数体执行之前初始化 final 实例变量 。在变量声明中,参数构造函数中或构造函数的初始化列表中进行初始化。
网友评论