用final
修饰的变量,必须在定义时将其初始化,其值在初始化后不可改变;const
用来定义常量。
区别:const
比final
更加严格。final
只是要求变量在初始化后值不变,但通过final
,我们无法在编译时(运行之前)知道这个变量的值;const
修饰的是编译时常量,我们在编译时就已经知道了它的值,显然,它的值也是不可改变的。
final
只能被设一次值,在声明处赋值,值和普通变量的设值一样,可以是对象、字符串、数字等,用于修饰值的表达式不变的变量;
final int a = 1;
const
只能被设一次值,在声明处赋值,且值必须为编译时常量;用于修饰常量
const int a = 1;
const int timeStamp = new DateTime.now(); //报错,因为编译时无法访问运行时的内容(即DateTime)
访问运行时的内容,可以采取final
final timeStamp = new DateTime.now();
Comments | NOTHING