運(yùn)算符
算術(shù)運(yùn)算符+,-,*,/,~/,%;
遞增遞減++var,var++,--var,var--;
關(guān)系運(yùn)算符==,!=,>,<,>=,<=;
邏輯運(yùn)算符!,&&,||;
賦值運(yùn)算符:=,??=
還有復(fù)合運(yùn)算符;條件表達(dá)式:三目運(yùn)算符:condition?expr1:expr2,??運(yùn)算符:expr1??expr2
控制語句
if語句;
switch..case語句(比較類型num,String,編譯期常量,對象,枚舉;continue跳轉(zhuǎn)標(biāo)簽);
for循環(huán),for...in循環(huán);
while循環(huán),do...while循環(huán);
終止循環(huán)break,跳出當(dāng)前循環(huán)continue;
方法
定義:返回類型 name(參數(shù)){return 返回值},
方法也是對象,并且有具體的類型Function,返回值,參數(shù)都可省略,
=>只適用一個(gè)表達(dá)式,沒指定返回值,則默認(rèn)返回null;
可選命名參數(shù){p1,p2},調(diào)用必須寫鍵,可選位置參數(shù)[p1,p2],可選參數(shù)聲明必須在具體參數(shù)后面;
使用=在可選參數(shù)指定默認(rèn)值,默認(rèn)值只能是編譯時(shí)常量;
方法可作為對象賦值給其他變量,方法可作為參數(shù)傳遞給其他方法;
匿名方法(參數(shù)){retuen 返回值},可作為上述對象的特性;
閉包是一個(gè)方法(對象),定義在其它方法內(nèi)部,能夠訪問外部方法內(nèi)的局部變量,并持有狀態(tài);
枚舉
是一種有窮序列集的數(shù)據(jù)類型,使用enum定義一個(gè)枚舉,常用于代替常量,控制語句等,index從0開始,依次累加,不能指定原始值,不能添加方法;
dart中類型是可選的,使用泛型限定類型(常用在抽象類),能夠有效的減少代碼重復(fù);
可用在類,方法上(方法名后面)
面向?qū)ο?/b>
類與對象,class聲明一個(gè)類,new創(chuàng)建一個(gè)對象,new可省略,
所有對象繼承于Object類,屬性默認(rèn)會生成getter和settter方法,使用final聲明的屬性只有g(shù)etter方法,通過.訪問,方法不能被重載.
dart中的可見性以library(庫)為單位,默認(rèn)情況下每一個(gè)dart文件就是一個(gè)庫,使用_表示庫的私有性,使用import導(dǎo)入庫;
計(jì)算屬性的值是通過計(jì)算而來的,本身不存儲值,計(jì)算屬性賦值是通過計(jì)算轉(zhuǎn)換到其它實(shí)例變量(set,get);
如果沒有自定義構(gòu)造方法,則會有默認(rèn)的構(gòu)造方法,若存在則無效,構(gòu)造方法也不能重載,可以使用命名構(gòu)造方法,可實(shí)現(xiàn)多個(gè)構(gòu)造方法,使用類名.方法的形式實(shí)現(xiàn);
常量構(gòu)造方法:如果類是不可變狀態(tài),可以把對象定義為編譯時(shí)常量,使用const聲明構(gòu)造方法,并且所有變量都為final,使用const聲明對象,可以省略;
工廠構(gòu)造方法:類似于設(shè)計(jì)模式中的工廠模式,在構(gòu)造方法前添加關(guān)鍵字factory實(shí)現(xiàn)一個(gè)工廠構(gòu)造方法,并可返回一個(gè)對象;
初始化列表:在構(gòu)造方法執(zhí)行之前執(zhí)行,使用逗號分隔初始化表達(dá)式,常用于設(shè)置final變量的值;
靜態(tài)成員:使用static來實(shí)現(xiàn)類級別的變量和函數(shù),靜態(tài)成員不能訪問非靜態(tài)成員,非靜態(tài)成員可以訪問靜態(tài)成員,類中的常量需要使用static const聲明;
對象操作符:條件成員的訪問使用?.可避免空指針,類型轉(zhuǎn)換as,是否指定類型is,is!,級聯(lián)操作..;
如果類實(shí)現(xiàn)了call()方法,則該類的對象可以作為方法使用;