前言:
Dart 是一種針對用戶端優化的程式設計語言,可以為任意平台開發流暢的應用程式。對于移動開發人員來說,由于Flutter架構的持續升溫,我們很有必要去學習它,而Dart正是它的開發語言,看上去是一門全新的面向對象程式設計語言,但其實它吸收了js,java等語言的特性,是以對前端以及移動開發人員來說比較友好,上手難度不大,如果你沒有任何語言經驗也不要緊,本系列文章将用一個個小例子來讓你快速入門。好了,一起學習吧!
1.變量與常量:
在說變量與常量前要告訴大家Dart語言的函數入口也是main方法,這和Java等語言類似,是以你要運作代碼首先要寫個main方法,具體細節以後會介紹,寫法如下:
void main(){
//int a = 3;
var a = 2;
a = 3;
const b = "james";
const int c = 0;
//b = 3
print(a);
print(b);
}
關鍵字(變量): var 通常用這個關鍵字來聲明一個變量 例: var a;
在Dart中聲明變量可以不用賦初始值,此時a為null,用var來聲明變量意味着你一開始沒有給a指定類型(這個時候a為dynamic類型,就是可變類型,這個是dart特有),這個時候Dart會根據你給它指派的類型來确定它的類型,如:a = 2;a就為int類型,其他類型也是這樣,這和js以及kotlin語言很像,變量可以多次指派來改變原有值。
關鍵字(常量):const 例: const d = 20;
聲明常量必須賦初始值,而且隻能指派一次,聲明常量具體類型你可給可不給,因為和變量一樣,Dart會根據值的類型來确定。好了,具體變量和常量代碼示例在上面,print()方法為dart中的列印方法。
2.資料類型:
Dart中内置的基本資料類型有以下:
- Number(數值型)
- String(字元串)
- Boolean(布爾型)
- List(清單)
- Map(鍵值對)
- Set(無序且内容不重複的清單)
- Runes(用來擷取UTF-32字元集的字元)
- Symbols(編譯時常量)
一,number數值型包括int(整型),double(浮點型)。聲明示例:
num a = 1; a = 1.1; int b = 2; double c = 2.32; c = 2;
值得注意的是如果采用num和double關鍵字來聲明變量可以同時賦int和double類型的值,即使是初始值也一樣,但如果用int關鍵字來聲明的話,則隻能賦整數。這和Java有相似之處。關于數值操作這些,下面直接上代碼:
void main() {
num a = 1.0;
a = 1.1;
//print(a);
int b = 15;
double c = 1.2;
c = 1;
print(b+c);
print(b-c);
print(b*c);
print(b/c); //結果為double
print(b~/c);//取除法結果整數部分
print(b%c);
print(0.0/0.0); //結果為NaN
print(b.isEven);//是否是偶數
print(b.isOdd);//是否是奇數
print(b.abs());//取絕對值
print(c.round());//四舍五入
print(c.floor());//小于它的最大整數
print(c.ceil());//大于它的最小整數
print(c.toInt());//把浮點型轉成整型
print(b.toDouble());//把整形轉成浮點型
}
二,String類型建立示例:
String str = "james"; str = 'kobe'; 單行顯示,Dart表示字元串單引号和雙引号都行,這與js和kotlin類似
String str = '''hello
dart''';
str = """hello
yx"""; 多行顯示時需要用三個引号
str = 'hello \n world'; \n為換行轉義符,即後面的字元換行
str = r'hello \n world'; 如果想顯示hello \n world,隻需在字元串前加r即可;
下面關于字元串的操作以及方法,直接上代碼示例:
void main(){
String str = '''hello
dart''';
str = """hello
yx""";
str = 'hello \n world';
str = r'hello \n world';
print(str);
/**
* 操作示例
*/
String str2 = 'my favorite basketball player is lebron james';
print(str2+' or kobe ;');//在str2後面拼接or kobe ;
print(str2*3);//将str2連續拼接3次
print(str==str2);//判斷是否相等,dart語言中所有判斷相等都用==操作符,結果為boolean類型
print(str2[str2.length-1]);//首先将str2看作一個數組,然後将指定位置的字元列印出來
//length屬性為字元串長度,這裡就是将str2字元串中最後一個字元單獨列印
int a = 2;
int b = 3;
print('a + b = ${a + b}');//$操作符意為将想要列印的變量,表達式,方法結果以字元形式列印
//如果是一個表達式或方法則需用{}括起來,
print('a = $a');//單獨一個變量則直接寫後面
print(str2.isEmpty);//isEmpty判斷目前字元串是否為空
print(str2.isNotEmpty);//isisNotEmpty判斷目前字元串是否不為空
/**
*方法示例
*/
print(str2.contains('is'));//目前字元串是否包含is
print(str2.startsWith('my'));//目前字元串是否以my開頭
print(str2.endsWith('es'));//目前字元串是否以es結尾
print(str2.substring(0,2));//截取下标0到1的字元串(前面的index包括,後面不包括)
print(str2.indexOf('m'));//m字元第一次出現的下标
print(str2.lastIndexOf('s'));//s字元最後出現的下标
print(str2.split(' '));//以' '為标志将目前字元串劃分為一個數組
print(str2.replaceAll('lebron james','kobe'));//前一個參數為要被替換字元串,後面為替換字元
}
三,boolean類型示例:
bool isFalse = false; bool isTrue = true;
和Java中不同的是,Dart中聲明boolean類型使用關鍵字bool,另外有過語言經驗的都應該知道,這個類型的值隻有true和false,即真假,如果不賦初始值為null。代碼示例如下:
void main(){
bool isTrue = true;
bool isFalse = false;
print(isTrue == isFalse);
}
四,list類型示例:
var list1 = [1,2,'sa']; var list2 = const [5,6,'kobe',true]; var list3 = new List();
這是三種常用建立list的方式,第一種是正常方式即沒有指定元素類型是以可以随便存儲各類型,第二種為常量list即不可更改元素值,第三種為沒有賦初始值,而且沒有控制元素個數,這種建立方式比較自如。關于list的相關操作我們直接看代碼:
void main(){
var list1 = [1,2,'kobe',true];
list1[0] = "james";
//print(list1[3]);
//print(list1);
var list2 = const [1,2,'wade',false];
var list3 = new List ();
print(list3);
list1.add(5);//在list1現有元素後面加上5
list1.insert(3,'rose');//在下标為3的位置插入指定元素,包括原位置及後面的元素往後推一位
print(list1);//給沒有程式設計經驗的小白提個醒,在幾乎所有程式設計語言中,下标都是0開始的
//print(list3);
list1.remove(1);//移除指定元素,如果沒有傳回false
print(list1);
print(list2.indexOf(2));//指定元素在數組中第一次出現的下标
print(list2.lastIndexOf(2));//指定元素在數組中最後一次出現的下标
var list4 = ['james','kobe','wade','rose'];
print(list4.sublist(1));//将包括給定index及後面的元素重新生成一個list
list4.forEach(print);//加強for循環周遊元素
list4.clear();//清空list
print(list4);
}
五,map類型示例:
var map1 = new Map(); var map2 = {'google':'dart','NBA':'JORDAN',1:true}; var map3 = const {'sun':'java','apple':'swift'};
首先map類型就是鍵值對,必須有相應鍵和對應值,這上面三種常用建立方式其實和list有異曲同工之妙,它的相關操作我也将直接上代碼講解:
void main(){
/**
* map建立
*/
var map1 = new Map();
var map2 = {'google':'dart','NBA':'JORDAN',1:true};
var map3 = const {'sun':'java','apple':'swift'};
print('map1: $map1');
print('map2: $map2');
print('map3: $map3');
//print(map2['NBA']);//通過指定鍵來取值
//print(map2[1]);
//map2[1] = 'james';
//print('map2: $map2');
//map3['apple'] = 'ios';//這裡因為是常量map是以不能改變值
//print('map3: $map3');
/**
* map操作
*/
var map4 = {'one':'C','two':'java','third':'dart','four':'python'};
print(map4.length);//map的長度
print(map4.isEmpty);//map是否為空
//map4.remove('one');//移除指定鍵
print(map4.keys);//列印全部鍵
print(map4.values);//列印全部值
print(map4.containsKey('one'));//是否包含這個鍵
print(map4.containsValue('java'));//是否包含這個值
map4.forEach(f);//加強for循環周遊
var list = [5,2,3,4];
print(list.asMap());//将list轉成map
}
void f(key,value){
print('key=$key , value=$value');
}
六,dynamic類型示例:
dynamic其實可以相當于var也就是聲明變量時不過其指定類型,即可變類型,dart中預設就是它了,下面看看代碼示例:
void main(){
//dynamic為可變類型
dynamic a = 20;
a = "james";
print(a);
var list = new List<dynamic>();
list.add(1);
list.add("kobe");
print(list);
}
到這裡我們将結束Dart語言第一部分介紹,至于Runes和Symbols類型用的不多,大家如果有興趣可以自己查資料,我這裡推薦 Dart官方文檔,好了,相信經過上面代碼及案例的介紹,大家已經對Dart有一定認識了,接下來我将繼續深入介紹Dart語言其他基礎部分,等我哦!
這裡給上我的demo位址供小夥伴們參考:https://github.com/OMGyan/dart_study (後續的代碼樣例基本參照于它)
以上。