在Dart中所有未初始化的变量默认值均为null。
变量:
var:
var申明的变量能够是任何数据类型,动静指定。
var变量一旦赋值,类型便会确定,则不能再扭转其类型。
var变量编译时须要确定变量类型。
dynamic:
dynamic申明的变量能够是任何数据类型,动静指定。
dynamic申明的变量能够在前期扭转赋值类型。
dynamic变量运行时须要查看变量类型
Object:
Object 是Dart所有对象的根基类,也就是说所有类型都是Object的子类(包含Function和Null),所以任何类型的数据都能够赋值给Object申明的对象。
常量:
final:
变量类型能够省略
应用final申明的变量,它只能赋值一次,赋值能够是常量也能够是变量。
final润饰的是一个最终的变量,不能再次赋值,否则会报错。也能够先申明再次赋值,然而只能赋值一次。
运行时常量;
const:
变量类型能够省略
const润饰常量,申明的时候就得赋值,只能赋值一次,赋值必须是常量。
不能批改,不能再次赋值。
编译时常量,必须定义的时候初始化;
区别:
能够把const 常量赋给 final 变量,反过来不能够。
const 变量 是隐式 final 的类型.
题外:
late:
显式申明一个非空的变量,但能够不初始化。
空平安:
定义变量时咱们能够指定变量是可空还是不可空;
Dart空平安反对基于以下三条外围准则
默认不可空:除非您把变量显式生命为可空,否则它肯定是非空类型;
渐进迁徙:您能够自在地抉择何时进行迁徙,多少代码会进行迁徙;
齐全牢靠:Dart的空平安是十分牢靠的,意味着编译期间蕴含了很多优化;
! 空值断言操作符
? 示意变量是可空类型
?. 右边如果为空返回 null,否则返回左边的值,该运算符罕用于避免空异样
?? 右边如果为空返回左边的值,否则不解决,该运算符罕用于设置默认值
发表回复