final和const共同點(diǎn)
1.類(lèi)型聲明可以省略
final String a = 'abc';
final a = 'abc';
const String a = 'abc';
const a = 'abc';
2.初始化后不能再賦值
final a = 'aaa';
a = 'abc'; //錯(cuò)誤
const b = 'bbb';
a = 'abc'; //錯(cuò)誤
3.不能和var同時(shí)使用
final var a = 'abc';//錯(cuò)誤
const var b = 'abc';//錯(cuò)誤
final和const區(qū)別
1.類(lèi)級(jí)別的常量馏予,通常用 static const
2.const可以使用其他const常量的值來(lái)初始化其值
const width=100;
const height=50;
const square=width*height;
3.需要確定的值
final dt = DateTime.now();//正確躏救,運(yùn)行時(shí)有確定的值
const dt = const DateTime.now();//錯(cuò)誤畜吊,需要編譯時(shí)有確定的值
- 不可變性可傳遞
const的不可變性是可傳遞的溯壶,final不是
final List ls = [11, 22, 33];
ls[1] = 44;//正確
const List ls = [11, 22, 33];
ls[1] = 44;//錯(cuò)誤
5.內(nèi)存中重復(fù)創(chuàng)建
值相同時(shí)final在內(nèi)存中重復(fù)創(chuàng)建歼冰,const會(huì)引用相同值
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