Flutter學習筆記(3)--Dart變數與基本資料型別

CurtisWgh發表於2019-07-09

如需轉載,請註明出處: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);

 

相關文章