Flutter學(xué)習(xí)日記(一)--Dart基礎(chǔ)知識(shí)

小伙伴,大家新年好,這是我2021年開始寫的文章啦!前一段時(shí)間不是過年嘛,就懶惰了一段時(shí)間,但是最近公司這邊也開始確定了接下來的項(xiàng)目都是使用Flutter了,所以,為了保住飯碗,就毅然決然的走上了Flutter的道路,關(guān)于Flutter的介紹我就不多說了,大家可以百度下!
這篇文章主要是說下Dart語言的基礎(chǔ)類型:
1、數(shù)字類型:主要分為三種,num,int,double,num是數(shù)字類型的父類,而int和double是整型數(shù)字和雙精度數(shù)字

void _numType() {
    num num1 = -1.0; //是數(shù)字類型的父類
    num num2 = 2; //是數(shù)字類型的父類
    int int1 = 3;
    double d1 = 1.68;
    print("num:$num1  num:$num2 int:$int1 double:$d1");
    print(num1.abs()); //求絕對(duì)值
    print(num1.toInt()); //轉(zhuǎn)換成int
    print(num1.toDouble()); //轉(zhuǎn)換成double
  }

2、字符類型:

 ///字符串
  void _stringType() {
    String str1 = '字符串', str2 = "雙引號(hào)"; //定義字符串可用''也可以用""
    String str3 = 'str:$str1 str2:$str2'; //字符串拼接和kotlin一樣
    String str4 = "常用數(shù)據(jù)類型,清查看控制臺(tái)輸出";
    String str5 = " my name is jeffrey ";
    String str6 = "MY NAME IS JEFFREY";
    print(str3);
    //字符串常用的方法,長度獲取string.length
    //1,字符串的截取,下標(biāo)從0開始,截圖不包含最后一位的
    print(str4.substring(1, 5));
    //2,獲取指定字符串的位置
    print(str4.indexOf("類型"));
    //3,字符串分割String.split(分割點(diǎn))[從什么位置開始分割],此分割只留下分割點(diǎn)前面那部分下來
    print(str4.split(",")[0]);
    //4,取當(dāng)前索引位置字符的UTF-16碼,暫時(shí)不知道有什么用
    print(str4.codeUnitAt(0));
    //5,判斷當(dāng)前字符串是否以"常用"開頭,返回的是布爾類型
    print(str4.startsWith("常用"));
    //6,判斷當(dāng)前字符串是否以"輸出"開頭,返回的是布爾類型
    print(str4.endsWith("輸出"));
    //7,把當(dāng)前字符串轉(zhuǎn)換為大寫字母
    print(str5.toUpperCase());
    //8,把當(dāng)前字符串轉(zhuǎn)換為小寫字母
    print(str6.toLowerCase());
    //9,判斷當(dāng)前字符串是否包含指定字符,返回布爾類型
    print(str5.contains("is"));
    //10,去除字符串首尾的空格
    print(str5.trim());
    //11,替換第一次出現(xiàn)指定字符位置的字符,參數(shù)1:被替換的指定字符,參數(shù)2:替換的內(nèi)容
    print(str5.replaceFirst("is", "are"));
    //12,全部替換指定的字符
    print(str5.replaceAll("f", "d"));
  }

3、布爾類型:

 ///布爾類型,Dart是強(qiáng) bool 類型檢查,只有bool 類型的值是true才被認(rèn)為是true
  void _boolType() {
    bool success = true, fail = false;
    print(success || fail); //輸出為true
    print(success && fail); //輸出為false
  }

4、List集合:

///List集合
  void _listType() {
    print('----listType-----');
    ///集合初始化的方式,集合內(nèi)容可以是任意類型的
    List list=[1,2,3,"集合"];
    //集合泛型的用法,<>為泛型的標(biāo)志,限制了集合中元素的類型
    List<int> list2=[1,2,3];
    //添加元素到集合中,add添加單個(gè)元素,而addAll則是把某個(gè)集合的全部元素添加進(jìn)來
    List list3=[];
    list3.add("list3");
    list3.addAll(list);
    print(list3);
    //集合生成函數(shù)的用法,參數(shù)1:生成函數(shù)的長度(從0開始算),參數(shù)2:生成函數(shù)的規(guī)則,index為函數(shù)的位置
    List list4=List.generate(3, (index) => index*2);
    print(list4);
    //集合遍歷的三種方式方式
    for(int i=0;i<list.length;i++){
      print(list[i]);
    }
    for(var index in list){
      print(index);
    }
    list.forEach((element) {
      print(element);
    });
    //訪問集合中的元素,下標(biāo)從0開始
    print(list4[0]);
    //集合的長度
    print(list4.length);
    //在指定位置插入元素,參數(shù)1:指定的元素位置(下標(biāo)從0開始),參數(shù)2:參入的內(nèi)容
    list.insert(3, "element");
    print(list);
    //移除指定位置的元素
    List list5=[1,2,3,4,5];
    list5.removeAt(4);
    print(list5);
    //清楚集合中的所有元素
    List list6=[1,2,3];
    list6.clear();
    print(list6);
    //截取子集合,參數(shù)1和2均為下標(biāo)位置,下標(biāo)從0開始,不包含最后下標(biāo)的元素
    print(list.sublist(1,3));
    //獲取集合中某個(gè)范圍的元素,下標(biāo)從0開始
    print(list.getRange(1, 4));
    //為每個(gè)元素之間增加字符進(jìn)行拼接
    print(list.join(","));
    //判斷集合是否為空,返回布爾類型
    print(list.isEmpty);
    //判斷集合中是否含有該元素
    print(list.contains(1));
  }

5、map集合:

 ///map是將key和value相關(guān)聯(lián)的對(duì)象,key和value都可以是任何類型的對(duì)象,并且key是唯一的,如果key重復(fù),后面添加的key會(huì)替換前面的內(nèi)容
  void _mapType() {
    print('----_mapType----');
    ///map初始化方法
    Map names={'xiaoming':'小明','xiaohong':'小紅'};
    print(names);
    Map ages={};
    ages['xiaoming']=16;
    ages['xiaohong']=18;
    print(ages);
    ///Map遍歷的三種方式
    ages.forEach((key, value) {
      print('$key,$value');
    });
    //注意=>是return的意思,MapEntry意思是map里面的每個(gè)map集合
    Map ages2=ages.map((key, value) =>
    //迭代生成新的一個(gè)Map
       MapEntry(value,key)
    );
    print(ages2);
    for(var key in ages.keys){
      print('$key  ${ages[key]}');
    }
    //判斷是否含有指定的key,返回布爾類型
    print(ages.containsKey("xiaoming"));
    //判斷是否含有指定的value,返回布爾類型
    print(ages.containsValue(16));
    //把map鍵值對(duì)中key或者value中提取出來形成List集合
    print(ages.keys.toList());
    //修改指定key的value值
    print(ages['xiaoming']="小命");
    //移除指定key的value值
    Map map2={1:2,3:4};
    map2.remove(1);
    print(map2);
  }

6、dynamic、var、object三者區(qū)別:

///科普小知識(shí):dynamic、var、Object三者的區(qū)別
  void _tips() {
    ///dynamic為動(dòng)態(tài)數(shù)據(jù)類型,它所定義的變量在編譯期間會(huì)失效,也就是編譯中無法識(shí)別它所定義的類型,但是在運(yùn)行中會(huì)依據(jù)它所定義的變量的內(nèi)容進(jìn)行類型推導(dǎo)
    ///而且它所定義的變量會(huì)依據(jù)它變量的值的變化,而在運(yùn)行中類型也會(huì)進(jìn)行變化
    dynamic x="xiaoming";
    print("${x.runtimeType}   $x");
    x=123;
    print("${x.runtimeType}    $x");
    ///var與dynamic的區(qū)別就是var所定義的變量在編譯期間可以進(jìn)行檢測,但是var也是屬性動(dòng)態(tài)數(shù)據(jù)類型,在初次定義的時(shí)候可以不用聲明數(shù)據(jù)類型,進(jìn)行自動(dòng)類型推導(dǎo),但是在初次定義后,賦值其他數(shù)據(jù)類型
    ///就會(huì)編譯報(bào)錯(cuò)
    var y="xiaoming";
    print(y.runtimeType);
    print(y);
    //y=123;會(huì)出現(xiàn)編譯報(bào)錯(cuò)
    ///object是dart對(duì)象的基類,所以通過object定義的變量就會(huì)變成一個(gè)對(duì)象而不再是變量
    Object o1='111';
    print('${o1.runtimeType}  $o1');
  }

然后順便安利下“熊喵先生”這位flutter的文章寫得真的很到位,各位看官可以去看下,鏈接如下:
https://juejin.cn/post/6844903981827751949#heading-15
好啦,我繼續(xù)去學(xué)習(xí)啦?。∽4蠹倚碌囊荒晏焯煜蛏希?!健健康康

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容