語法基礎:
- 使用 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();
列表-List
7.鍵值對-Map
map相關操作
Runes,Symbols類型(用不到)
dynamic 相當於java中的泛型
二、運算符
1.算數運算符:
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");
}