天天看點

Dart基礎入門(一)變常量與資料類型前言:

前言:

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  (後續的代碼樣例基本參照于它)

以上。