所有章節的筆記:java
1.使用var聲明變量,可賦予不一樣類型的值。若是不初始化變量的值,則默認是null。賦值之後變量的數據類型就已經肯定。數組
2.使用final聲明一個只能賦值一次的變量。閉包
3.使用const聲明常量。使用const聲明的必須是編譯期常量(在編譯的時候就能肯定的值)。函數
4.isNaN是不是非數字,isEven是不是偶數,isOdd是不是奇數。abs()絕對值,round()四捨五入,floor()向下取整,ceil()向上取整,toInt()轉成整型,toDouble轉成浮點型。~/除完再取整。對象
5.使用3個引號能夠定義多行字符串。字符串中加入」\n」也開始以換行。在字符串引號前邊加上「r」,則不會轉義。「+」進行多個字符串相加。「*n」將字符串複製n次。「==」用於判斷兩個字符串是否相等。「[n]」用於去除字符串中的第n個索引的子字符串。排序
使用」${}」打印表達式的值,打印單個變量的值不用加「{}」。索引
length打印字符串的長度。「isEmpty」判斷字符串是否爲空。rem
「contains()是否包含某個字符串」。」substring(startIndex,endIndex)截取一段字符串」。「字符串
startsWith()」是否以某個字符串開頭。「endsWith()是否以某個字符串結尾」。string
「indexOf()「某個字符串的下標。」lastIndexOf()」最後一次出現某個字符串的下標。」
toLowerCase()「轉爲小寫,」toUpperCase()「轉爲大寫。
「trim()」清除空格。」trimLeft()「清除前邊的空格。」trimRight()「清除後邊的空格。」
split()「分割字符串。」replace(),replaceAll(‘old’,’new‘)「替換字符串。
6.建立List(數組):var list=[1,2,3]。建立不可變List:var list=const[1,2,3]。構造建立:var list=new List();。list.length打印數組的長度。list.add(元素)添加元素。list.insert(index,value)給指定索引的位置添加元素。list.remove(元素)移除某個元素。list.clear()清空數組中的元素。list.indexOf(元素)獲取指定元素的索引,找到則返回對應的索引,找不到則返回-1。list.sort()給數組按照ASCII碼排序。list.sublist(start,end)截取字符串。list.forEach(print)打印list中的元素,還能夠傳入自定義方法。
7.建立Map:var map1={「key1」:value1」,」key2」:」value2」}。建立不可變Map:var map2=const{「key1」:」value1」}。構造建立:var map3=vew Map()。length字典中鍵值對的個數。isEmpty()是否爲空,isNotEmpty()是否不爲空。keys獲取全部的鍵。values獲取全部的值。containsKey()是否包含某個鍵。containsValue()是否包含某個值。remove()移除某個元素。forEach循環遍歷字典。map.forEach(f);
void f(key, value){
print(「key=${key},value=$value」);
}
list轉換爲map,list.asMap(),自動添加索引做爲map的key。
8.dynamic聲明變量的時候變量的類型是動態改變的。
dynamic 1=10;
a=「test」;
var list=new List<dynamic>();
list.add(1);
list.add(「test」);
list.add(true);
print(list);
9.??=賦值運算符,int b=5;b??=10;若是b是空的、沒有值,則給b賦值10,不然保持原值。
10.??運算符,String a;String b=‘java’;String c=a??b;若是a有值則c=a,若是a沒有值則c=b。
11.for…in循環語句for(var item in list){}。
12.break終止整個循環,退出for循環。continue終止當前循環,繼續下一次循環。
13.switch…case語句中非空case必須有一個break。continue語句會繼續執行指定位置開始的語句。
Test:
case ‘java’:
print(‘java’);
continue Test;
打印完java後,會跳轉到"Test"處繼續從上向下執行。
14.方法也是對象,而且有具體類型Function。返回值類型、參數類型均可省略。
箭頭語法:=>expr是{return expr;}的縮寫。只適用於一個表達式。
方法都有返回值。若是沒有指定,默認return null最後一句執行。
15.可選命名參數:{param1,param2},在調用函數的時候能夠不傳大括號中的參數。prientPerson1(String name,{int age,String gender}){
print(「name=$name,age=$age,gender=$gender」);
}
printPerson1(「hao」,age:20,gender:’Male’);。
可選位置參數:[param1,param2]。
prientPerson2(String name,[int age,String gender]){
print(「name=$name,age=$age,gender=$gender」);
}
printPerson2(「good」,18,’FeMale’);
若是存在具體固定的參數,可選參數聲明,必須在固定的參數後面。
默認參數值:
prientPerson3(String name,{int age=30,String gender}){
print(「name=$name,age=$age,gender=$gender」);
}
printPerson3(「good」,18,’FeMale’);
當沒有設置age時,age的值是默認30。
16.方法可做爲對象賦值給其餘變量。方法可做爲參數傳遞給其餘方法。
Function func=printHello;
func();
void printHello(){
print(「hello」);
}
17.匿名方法:
var func=(str){
print(「hi-$str」);
};
fun(‘abc’);
((){
print(「test」);
})();
這種寫法方法會自動執行。
匿名方法:
a() {
return (){
print(‘abc’);
};
}
18.閉包是一個方法(對象)。閉包定義在其餘方法內部的方法。閉包可以訪問外部方法內的局部變量,並持有其狀態。
a(){
int count=0;
printCount(){
print(count++);
}
return printCount;//返回的是一個方法
}
var func=a();
func();
func();
func();