官網
核心概念
- 一切能賦給變數的都是物件,每個物件都是一個類的例項。數字、方法、null 都是物件,所有的物件都是繼承自 Objet 類。
- 強型別語言,但是具備型別推斷的能力。如果想明確說明變數型別不確定,則可以定義為 dynamic 型別。
- 支援泛型
- 支援頂級方法,以及類、例項方法,也可以在方法中建立方法
- 支援頂級變數,以及類、例項變數
- 沒有 public、protected、private關鍵字,以下劃線(_)開頭的識別符號表示私有。
- 識別符號以字母或者下劃線開頭
- 支援表示式(有 runtime values,如 condition ? value1 : value2)和語句(沒有,例如 if-else statement)。語句包含一個或多個表示式,表示式不能包含語句。
- dart工具可以報告 warnings 和 errors(compile-time error 或者 run-time error)。
關鍵字
參考官網
變數
- 型別推斷方式
var name = 'bob';
- 動態型別變數
dynamic name = 'bob';
- 靜態型別變數
String name = 'bob';
預設值
未初始化的變數預設值未 null ,即使時數字型別的變數未初始化,預設值也是 null ,因為所有能賦值給變數的都是物件。
int lineCount;
assert(lineCount == null);//在生產模式下會被自動忽略,在開發模式下如果不滿足條件會丟擲異常
複製程式碼
Final 和 const
和 java 類似,定義常量,final 修飾的變數只可以賦值一次,const 修飾的變數是編譯時常量,const含有final的作用。
例項變數可以用final修飾,但是不能用const修飾,並且必須在構造器方法體執行之前使用構造引數進行初始化
類級別的常量可以用 static const 修飾。
const 不僅可以用來宣告常量,還可以用來建立常量,宣告建立常量的構造器。任何變數都可以被常量值賦值。