在java中声明一个变量可以使用 int i; 此时i的默认值为0;在dart语言中一切皆对象,因此在dart中i的默认值则为null;
Object :任意类型
Objet i; //声明i 变量,此时i的类型为任意类型;
var: 在声明的变量赋值的那一刻就决定了什么类型
var j ="zcx";//此时j的类型为字符串类型
j=100 ;//此时将赋值为100会报错;
var k;//此时k 的类型为任意类型
k = "zcx";
k = 100;
因为k 声明的为任意类型 ,即时执行了 k = "zcx"这句代码后,k的类型仍然是任意类型。所以以上两句代码不会报错;
dynamic 动态类型,不是在编译的时候确定变量的实际类型,在运行的时候确认类型;
dynamic z = "zcx";//此时变量z类型为字符串类型
z = 100;//此时变量z类型为数字类型
final: 运行时常量,与java 类型,可以按照java的理解去理解
final int i =1; //声明一个运行时常量
final i =1; //此处可以省略 int
const:编译时常量,运行速度、性能更好,因为在运行前就已经确定了;
const j = 1; //因为在编译时就已经确定了j的值,所以在用到j的地方的值就是1;
const z = i ;//此处会报错,因为你不能将一个运行时候才能确定的值赋值给一个编译时就要确定的变量,此处存在时间节点的、加载顺序问题,反之则可以(可以使用一个编译时确定的变量复制给运行时变量)如下:final w = j;//此处是可以的
final 和const 都是表示一个不可变的变量;后期在声明类的时候会比较明显;