小伙伴,大家新年好附迷,這是我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)行檢測(cè),但是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í)啦N获谩裆蒸!祝大家新的一年天天向上!糖驴!健健康康