Dart語言基礎

語法基礎:

  • 使用 var 聲明一個變量
  • 使用 final 聲明一個只能賦值一次的變量
  • 使用 const 聲明一個常量
var bb=123;
final s=123;
const ss=123123;

一、Dart中的數據類型

1. 數值型-Number 分爲2種類型

  • 1.1 可以是任意類型:num 因爲num是int和double的父類
  • 1.2 整型 :int
  • 1.3 浮點型: double

2. 數值型操作符

“+” 、 " -"、 " *"、 “/” 、 ~/ (取整) 、 %取餘

3. 字符串-String

  • 使用單引號或者雙引號創建字符串
  • 使用三個引號創建多行字符串
  • 使用r創建raw字符串 r"hello \n world" 不會進行轉譯字符串

4. 常見操作符: + * == []

String str="hello";    
print(str * 2);    //hellohello   
print(str[1]);   //e
  • 插值表達式
    ${expression} 表達式
  int e=5;
  int f=8;
  print("e+f = ${e+f}");   //e+f = 13
  print("e= $e"); //e= 5
  • 代表將字符串重複出現幾次
  • 常用屬性: length 、isEmpty 、isNotEmpty

  • 常用方法 替換,索引,去分隔,截取,大小寫轉換等。

5. 布爾類型:

bool true false

6. List(數組)

創建List

  var list=[1,2,3];
  var list2=const[1,2,4,6];
  var list3=new List();

image.png

列表-List

7.鍵值對-Map

map相關操作
image.png

Runes,Symbols類型(用不到)
dynamic 相當於java中的泛型

二、運算符

1.算數運算符:

image.png

2.關係運算符:

== 、!= 、>、 <、 >=、 <=

需要注意的是:java中字符串判斷內容是否相同使用equal ,判斷地址相同才使用== ,而在Dart中使用== 表示內容判斷

3.邏輯運算符:

! 、&&、 ||

4.賦值運算符:

  • 4.1基礎運算符: = 、??=
  • 4.2複合運算符:+= 、-=、*=、/=、%=、~/=
  //  ??= 運算符的含義,如果有初始值,則使用,沒有值,則進行賦值
  int r=10;
  int v;
  v ??=r;
  print(v);   // 10

  v=90;
  v ??=r;
  print(v);  //90

條件表達式

  • 三目運算符 :condition?expr1 : expr2;
  • ?? 運算符:expr1??expr2
  // ?? 條件表達式
  String sss;
  String str2="dart";
  String ss=sss??str2;
  print(ss);   //dart

循環語句

  for(var index=0;index<list.length;index++){
    print(list[index]);
  }

  //for... in...
  for(var item in list){
    print(item);
  }

switch…case…語句:

比較類型:num,String,編譯器常量
continue 跳轉標籤

三、方法特性

  • 方法也是對象,並且有具體類型Fucnction

  • 返回值類型,參數類型都可以省略

  • 箭頭語法: => expr 是 {return expr;}縮寫

  • 方法都有返回值,如果沒有指定,默認return null;

可選參數
可選命名參數{param1、param2、…}
可選位置參數[param1、param2、…]

void main(){ 
 getPerson("OnexZgj");
  getPerson("OnexZgj",age: 18);
  getPerson("OnexZgj",age: 18,male: true);

  getPerson2("Linsa");
  getPerson2("Linsa",17);
  getPerson2("Linsa",17,false);

  
}

//可選參數類型
getPerson(String name,{int age,bool male}){
  print("name= $name,age=$age,male=$male");
}


getPerson2(String name,[int age,bool male]){
  print("name= $name,age=$age,male=$male");
}

輸出如下結果:
name= OnexZgj,age=null,male=null
name= OnexZgj,age=18,male=null
name= OnexZgj,age=18,male=true
name= Linsa,age=null,male=null
name= Linsa,age=17,male=null
name= Linsa,age=17,male=false

四、方法對象Function

void main() {
 //匿名方法的調用
 Function fuc = (str){
   print("the world is beautiful! $str");
 };

 fuc(123);

 //方法對象使用
 var method = printInfo();
 method();
}

printInfo () {
 print("Hello OnexZgj");
}

五、閉包

  • 閉包是一個方法(對象)

  • 閉包定義在其它方法的內部

  • 閉包的作用,通過閉包,將方法內部的局部變量暴露出來。

void main() {
  var method=a();
  method();
  method();
  method();
}

a() {
  var count = 0;
//  printInfo() {
//    print(count++);
//  }
//  return printInfo;

    return (){
      print(count++);
    };
}

練習代碼

void main() {
  int a = 10;
  double b = 12.5;

  print("hello world OnexZgj");

  //num 常用函數
  double c = 10.5;
  print(c.floor()); //不大於本身的最大整數  10

  print(c.ceil()); //大於本身的最小整數  11
  print(c.abs()); // 絕對值 10.5
  print(c.round()); //四捨五入 11

  print(c.toInt()); // 10
  print(c.toDouble()); // 10.5

  //字符串常見方法
  String str = "hello";
  print(str * 2); //hellohello
  print(str[1]); //e

  //插值表達式
  int e = 5;
  int f = 8;
  print("e+f = ${e + f}"); //e+f = 13
  print("e= $e"); //e= 5

  //布爾類型
  bool F = true;
  bool D = false;
  print(F);

  //創建數組
  var list = [1, 2, 3];
  var list2 = const [1, 2, 4, 6];
  var list3 = new List();
  list.forEach(print);

  //創建Map

  var map = {"name": "onexzgj", "sex": "man"};
  print(map);  //{name: onexzgj, sex: man}

  //常量map
  var map1 = const {"age ": 23, "isStudent": true};
  print(map1);  //{age : 23, isStudent: true}

  //list轉爲map的操作
  var map2 = list.asMap();
  print(map2); //{0: 1, 1: 2, 2: 3}


  //  ??= 運算符的含義,如果有初始值,則使用,沒有值,則進行賦值
  int r=10;
  int v;
  v ??=r;
  print(v);   // 10

  v=90;
  v ??=r;
  print(v);  //90


  // ?? 條件表達式
  String sss;
  String str2="dart";
  String ss=sss??str2;
  print(ss);   //dart


  for(var index=0;index<list.length;index++){
    print(list[index]);
  }

  //for... in...
  for(var item in list){
    print(item);
  }


  String language= "sss";
  switch(language) {
    case "java":
      print("java is my favorite!");
      break;
    case "dart":
      print("dart is my favorite!");
      break;

  }

  getPerson("OnexZgj");
  getPerson("OnexZgj",age: 18);
  getPerson("OnexZgj",age: 18,male: true);

  getPerson2("Linsa");
  getPerson2("Linsa",17);
  getPerson2("Linsa",17,false);


}

//可選參數類型
getPerson(String name,{int age,bool male}){
  print("name= $name,age=$age,male=$male");
}


getPerson2(String name,[int age,bool male]){
  print("name= $name,age=$age,male=$male");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章