主函數java
void main ( ) { }
設計模式
聲明變量數組
var a num a int a double a bool a = true
數據類型安全
特殊運算符 ~/ 向下取整ide
''' hello dddd'''
表示多行字符串,保留換行函數
'hello \n Dart' 會換行
this
String aa = r''hello \n Dart"
不會換行.會輸出\n設計
'abc' * 2 == 'abcabc'
code
'abc'[1] == 'b'
對象
字符串插值 " a + b = ${a + b}"
${xx}
是個表達式 只有一個變量插值可省略寫成 $a
Map鍵值對
var qq = {'first' : 'Dart' , 'second' : 'java'};
var q = const { ,,,, }
q = new Map()
qq['frist']
qq.forEach ( f ); void f( key , value ){.......}
var a = 10; a = "xxx";
dynamic a = 20; a="xxx";
var lis = new List\<dynamic\>();
這樣聲明的lis 能夠使用各類類型的數據b ??= 10;
b是空的則是10,有值則不作改變.a~/=b
相似於 a+=bvar c = a ?? b
a爲空時表達式爲b的值void main () {}
void位置是返回類型 void指的是不須要返回類型xxx(){}
js中定義函數 function xx () {}
void fun(String name , int age) {xxxx}
fun(String name , {int age, String kk}) fun('張三',age:20)
位置不固定fun(String name , [int age , String kk]) fun('張三' , 20 )
位置固定fun(String name , {int age = 30, String kk})
() {}
可賦值給 變量 或者直接調用 .. 不能直接定義在最外層((){})()
自調.自執行class 聲明類 new建立對象.new可省略 全部對象默認繼承於Object類
class 屬性默認有getter和setter方法--java須要自定義
class final聲明的屬性是隻讀的
class 方法不能重載
//舉例 class Person { String name; int age; void work(){ print("name is $name , age is $age") }, Person (String name , int age){//構造方法 this.name = name; this.age = age; }; Person (this.name,this.age);//構造方法簡寫 Person.ddd (){}; //帶名稱的構造方法 } //調用 var person = new Person();//new Person('Tom'.20)--有構造時 person.name = 'Tom'; person.age = 20; person.work(); //name is Tom , age is 20
使用_
表示私有性. 默認一個Dart文件就是一個庫 .. Dart中可見性以Library(庫)爲單位 java的可見性設置十分多
class的計算屬性
class Rect{ num width,height; num get area => width * height;// area{ return w*h } set area(val) {//給計算屬性area賦值時,處理數據,給其餘屬性賦值 width = val / 20; }; } var re = new Rect(); re.height = 20; re.width = 10; print(re.area); //200
構造方法-建立對象時調用的方法 可設置多個構造 .. 詳情看上上面的person
使用const聲明構造方法,而且全部變量都爲final,使用const聲明對象.能夠省略
?.安全訪問成員 person?.work() 對象存在時調用work不存在則不執行
as 類型轉換
is is! 是不是指定類型
級聯操做 person..name='xx'..age=20..work();