dart-常量

final和const共同点

1.类型声明可以省略

final String a = 'abc';
final a = 'abc';
 
const String a = 'abc';
const a = 'abc';

2.初始化后不能再赋值

final a = 'aaa';
a = 'abc';    //错误
 
const b = 'bbb';
a = 'abc';    //错误

3.不能和var同时使用

final var a = 'abc';//错误
const var b = 'abc';//错误

final和const区别

1.类级别的常量,通常用 static const
2.const可以使用其他const常量的值来初始化其值

const width=100;
const height=50;
const square=width*height;

3.需要确定的值

final dt = DateTime.now();//正确,运行时有确定的值
const dt = const DateTime.now();//错误,需要编译时有确定的值
  1. 不可变性可传递
const的不可变性是可传递的,final不是
final List ls = [11, 22, 33];
ls[1] = 44;//正确
const List ls = [11, 22, 33];
ls[1] = 44;//错误

5.内存中重复创建
值相同时final在内存中重复创建,const会引用相同值

final a1 = [11 , 22];
final a2 = [11 , 22];
print(identical(a1, a2));//false
const a1 = [11 , 22];
const a2 = [11 , 22];
print(identical(a1, a2));//true

你可能感兴趣的:(dart-常量)