dart里面有两种定义变量的方式。
一. 变量类型 变量名称 = 赋值
main() {
String name = "fufu";
int age = 20;
double height = 170.5;
print(name);
print(age);
print(height);
}

注意事项: 定义的变量可以修改值, 但是不能赋值其他类型
main() {
String name = "fufu";
int age = 20;
double height = 170.5;
age = 21;
height = '170';
print(name);
print(age);
print(height);
}

二. 类型推导(Type Inference)
使用 var,const dynamic,final 变量名称 = 赋值;这种赋值方法可以不用定义数据类型,直接声明。他会自动进行类型的推导,判断类型进行填充。
二.一 var
使用var在定义变量的时候不声明变量类型,等在编译时自动判断,有些类似与js的var,所以有人把dart也看做和js一样的动态语言。
main() {
var name = "fufu";
var age = 20;
var height = 170.5;
print(name);
print(age);
print(height);
}

使用var定义的变量同样只能进行值的改变不可以进行类型的改变
main() {
var name = "fufu";
var age = 20;
var height = 170.5;
age = 21;
height = '170';
print(name);
print(age);
print(height);
}

二.二 dynamic
想要再一开始就可以进行变量类型的转变,只能使用dynamic定义变量,他表示任意类型,但是不推荐,随意的变量类型会带来隐藏危险。
main() {
dynamic name = "fufu";
dynamic age = 20;
dynamic height = 170.5;
age = 21;
height = '170';
print(name);
print(age);
print(height);
}

三.三 final&const的使用
final和const都是用于定义常量的, 也就是定义之后值都不可以修改
main() {
final name = "fufu";
const age = 20;
age = 21;
name = 'dandan';
print(name);
print(age);
}

那final和const有什么区别呢?
- const在赋值时, 赋值的内容必须是在编译期间就确定下来的
- final在赋值时, 可以动态获取, 比如赋值一个函数
// const time = DateTime.now(); // 错误的赋值方式
final time = DateTime.now();
print(time); // 2021-04-02 09:34:57.970402
网友评论