下面先用简单的例子说明一下区别,再通过代码理解"const所修饰的是编译时常量"这句话:
基本用法
final:只能被设一次值,在声明处赋值,值和普通变量的设值一样,可以是对象、字符串、数字等,用于修饰值的表达式不变的变量...atm = 1.01325 * bar; // 值的表达式中的变量必须是编译时常量(bar);
var c = 12;
// atm = 1 * c; //出错,因为c不是一个编译时常量...//你可以改变 非final, 非const 修饰的变量,
// 即使它的值为编译时常量值.
foo = [];
// 不能改变final和const修饰的变量的值.
// bar = []; //...[]和[1,2,1]是不同的对象*/
print(foo);
final baz = [1];
// baz=[1,2,3,4]; //出错 此调用修改了变量的实例 即:[1]...和[1,2,3,4]是不同的对象
baz[0]=2; //正常执行,只修改了变量引用对象的成员变量的值
print(baz);
final bad = []; //