在Dart裡面,變數的聲明使用var、Object或Dynamic關鍵字,如下所示: var name = ‘張三’; 在Dart語言里一切皆為對象,所以如果沒有將變數初始化,那麼它的預設值為null(包括數字),如果需要判斷變數是否為null,則需要進行如下判斷: String name;if(n... ...
如需轉載,請註明出處:Flutter學習筆記(3)--Dart變數與基本數據類型
一.變數
在Dart裡面,變數的聲明使用var、Object或Dynamic關鍵字,如下所示:
var name = ‘張三’;
在Dart語言里一切皆為對象,所以如果沒有將變數初始化,那麼它的預設值為null(包括數字),如果需要判斷變數是否為null,則需要進行如下判斷:
String name;if(name == null);
上面var name = ‘張三’,並沒有顯示的聲明變數的類型,我們也可以顯示的聲明:String name = ‘張三’;如果對象(變數)不僅限於單一類型,請用Object或Dynamic關鍵字來進行修飾;
二.常量與固定值
在Dart語言裡面,如果想要聲明不變的常量,可以使用final和const來進行修飾。
1.final
final修飾的常量必須在聲明的時候就進行初始化,而且在初始化之後值不可變;
final userName = '張三'; userName = ‘李四’;//會引發錯誤
2.const
const與final不同,const是一個編譯時的常量,這也就意味著通過const修飾的常量,在編譯期間就要被初始化,不能等到程式運行後在進行初始化;
const userName;//錯誤,const是編譯時常量,需要在聲明時進行賦值初始化 const userName = ‘張三’;//正確 var name = ‘張三’; const userName = name;//錯誤,name是個變數,不能賦值給const
const不僅僅可以聲明常數變數,也可以聲明常量值以及聲明創建常量值的構造函數,任何變數都可以有一個常量值;
final aList = const[]; const bList = const[]; var cList = const[]; 這裡的aList和bList就是兩個空的、不可變的列表集合,而cList則是空的、可變的列表集合; 需要註意的是:cList可以重新賦值,而aList和bList不可以重新複製;
三.基本數據類型
Dart語言常用的基本數據類型包括:Number數字、String字元串、Boolean布爾、List數組、Map集合、symbol符號;
1.Number類型包括int整型和double浮點型;
int整型:取值範圍為-2^53到2^53,int類型不能包含小數點;
double浮點型:64位(雙精度)浮點數;
int和double都是num類型的子類,num類型包括的運算操作有:+、-、*、/、以及移位操作>>,num類型包括的常用方法有:abs、ceil和floor;
2.String類型
String s1 = ‘張三’; String s2 = ‘李四’; String s3 = s1 + s2; print(s3); 列印:張三李四; //單引號裡面嵌套單引號,必須在前面加上反斜杠 String s4 = ‘單引號裡面有單引號it\'s,必須在前面加反斜杠’; //雙引號裡面嵌套單引號,可以正常使用 String s5 = “雙引號裡面有單引號it‘s,可正常使用”; //單引號裡面嵌套雙引號,可以正常使用 String s6 = ‘單引號裡面有雙引號“hello word”,可以正常使用’; //雙引號裡面嵌套雙引號,必須在前面加上反斜杠 String s7 = “雙引號裡面有雙引號\“hello word\”,必須在前面加上反斜杠” //可以通過使用單引號或雙引號的三引號來創建多行文字; String s8 = '''這是一個 多行的 文本'''; String s9= """這也是一個 多行的 文本""";
3.Boolean類型
bool a = false;
4.List集合
和java一樣, list裡面的數據必須同一類型的數據,而且下標是從0開始的;
var list = [1,2,3]; //聲明一個編譯時常量const的list List list = const[11,22,33];
5.Map集合
Map類型將Key和Value關聯在一起,也就是鍵值對,像其他支持Map的編程語言一樣,Key必須是唯一的;
var week = { ‘Monday’ : ‘星期一’, ‘Tuesday’ : ‘星期二’, ‘Wednesday’ : ‘星期三’, ‘Thursday’ : ‘星期四’, ‘Friday’ : ‘星期五’, ‘Saturday’ : ‘星期六’, } var week = new Map(); week['Monday'] = ‘星期一’; week['Tuesday'] = ‘星期二’; week['Wednesday'] = ‘星期三’; week['Thursday'] = ‘星期四’; week['Friday'] = ‘星期五’; week['Saturday'] = ‘星期六’;
添加新的Key-value對,對上面week再添加一個新的值;
week['0'] = '星期日';
這裡的0不是只下標的索引,而是一個鍵(Key),因此我們要列印week的length的話,長度為7;
檢查Key是否再Map對象中
assert(week['Mond'] == null);