Dart 語法學(xué)習(xí)目錄
第一節(jié): Dart 語法了解,認(rèn)識(shí)變量,常量,數(shù)據(jù)類型
第二節(jié): Dart 操作符(運(yùn)算符)
第三節(jié): Dart 中流程控制,條件判斷以及循環(huán)語句
第四節(jié): Dart 中常用集合 List/Map
第五節(jié): Dart 函數(shù)使用,聲明函數(shù)/匿名函數(shù)/可選參數(shù)/作用域/閉包
第六節(jié): Dart 面向?qū)ο?構(gòu)造函數(shù)/靜態(tài)屬性
第七節(jié): Dart中抽象類abstract/接口implements/混入Mixin
第八節(jié): Dart中泛型/泛型定義與使用
第九節(jié): Dart 中的庫/自定義庫/內(nèi)置庫/第三方庫
1. 算術(shù)運(yùn)算符
+-*/%(取余)~/(取整)
void main(){
// 算術(shù)運(yùn)算符
int num1 = 13;
int num2 = 5;
print(num1 + num2); // 加 18
print(num1 - num2); // 減 8
print(num1 * num2); // 乘 65
print(num1 / num2); // 除 2.6
print(num1 % num2); // 取余 3
print(num1 ~/ num2); // 取整 2
}
2. 一元運(yùn)算符
-expr負(fù)數(shù)++expr遞增expr++遞增--expr遞減expr--遞減
void main(){
// 一元運(yùn)算符
int num = 13;
int num2 = 5;
// 負(fù)數(shù)
print(-num); // 負(fù)數(shù) -13
// 遞增
++ num;
num2 ++;
print(num); // 14
print(num2); // 6
// 遞減
-- num;
num2 --;
print(num); // 13
print(num2); // 5
}
那么++在前在后有什么區(qū)別呢
如果不用再表達(dá)式中, 在前在后都一樣, 都是對當(dāng)前變量的遞增.
如果是在表達(dá)式中參與運(yùn)算結(jié)果就不一樣了
void main(){
// 一元運(yùn)算符
int num = 13;
// ++ 操作符
int price = num + 12;
print(price); // 25
print(num); // 13 普通加法 num值不變
// ++ 操作符在前
int price2 = ++num + 12;
print(price2); // 26
print(num); // 14
// ++ 在前是先運(yùn)算自增,然后在運(yùn)算表達(dá)式
// 等價(jià)于
// ++num // num+1 變成了14
// int price2 = num + 12 此時(shí)num是14 所以price2值為16
// ++ 操作符在后
int price3 = num++ + 12;
print(price3); // 26
print(num); // 15
// ++ 在后是先運(yùn)算表達(dá)式,然后在運(yùn)算自增
// 等價(jià)于
// int price3 = num + 12 此時(shí)num是14 所以price2值為16
// num++ 自增等價(jià)于 num+1 變成了15
}
也就是++自增運(yùn)算符無論在前在后對于變量本事來說都是一樣的,就是自身值加1,
所以如果不參與表達(dá)式運(yùn)算, 對于變量本事沒有影響
如果參與到表達(dá)式中運(yùn)算, ++在前就是變量先自增,然后用自增的結(jié)果參與運(yùn)算
++在后, 就是先用變量之前的值參與表達(dá)式運(yùn)算, 在讓變量自己自增.
3. 關(guān)系運(yùn)算符
==相等!=不>大于<小于>=大于等于<=小于等于
void main(){
// 關(guān)系運(yùn)算符
int num1 = 13;
int num2 = 5;
print(num1 == num2); // 判斷是否相等
print(num1 != num2); // 判斷是否不等
print(num1 > num2); // 判斷是否大于
print(num1 < num2); // 判斷是否小于
print(num1 >= num2); // 判斷是否大于等于
print(num1 <= num2); // 判斷是否小于等于
}
關(guān)系運(yùn)算符主要用到條件判斷里
void main(){
// 關(guān)系運(yùn)算符
int num1 = 13;
int num2 = 5;
// 條件判斷
if(num1 > num2){
print("num1 大于 num2");
}else{
print("num1 不大于 num2");
}
}
4. 邏輯運(yùn)算符
!取反&&邏輯與(并且的意思)||邏輯或(或者的意思)
void main(){
// 邏輯運(yùn)算符
bool a = true;
bool b = false;
print(!a);
print(a && b);
print(a || b);
}
5. 賦值運(yùn)算符
基礎(chǔ)賦值運(yùn)算符
?
=賦值??=變量為 null 時(shí)才會(huì)賦值,變量不為null不賦值復(fù)合賦值運(yùn)算符
?
+=加等于-=減等于*=乘等于/=除等于%=取模等于~/=取整等于
5.1 基礎(chǔ)賦值
void main(){
// 賦值運(yùn)算符
// 1. 基本的賦值運(yùn)算符
// 普通賦值
int num = 20;
int num2 = num;
print(num);
print(num2);
// 判斷變量是否為空,為空才賦值,不為空則不賦值
int n = 6;
n ??= 23; // 如果n為空,就賦值23,否則就不給n賦值
print(n); // 6
int n = null;
n ??= 23; // 如果n為空,就賦值23,否則就不給n賦值
print(n); // 23
}
5.2 復(fù)合賦值
void main(){
// 賦值運(yùn)算符
// 2. 復(fù)合賦值運(yùn)算符
// 普通賦值
double num = 30.0;
int num2 = 20;
// += 加等于
// num += num2;
// print(num); // 50
// print(num2); // 20
// -= 減法等于
// num -= num2;
// print(num); // 10
// print(num2); // 20
// *= 乘等于
// num *= num2;
// print(num); // 600
// print(num2); // 20
// /= 除等于
// num /= num2;
// print(num); // 1.5
// print(num2); // 20
// %= 取模等于
// num %= num2;
// print(num); // 10
// print(num2); // 20
int result = 30;
// ~/= 取整等于
// result ~/= num2;
// print(result); // 1
// print(num2); // 30
}
6 條件表達(dá)式
condition ? expr1 : expr2 三目運(yùn)算符
expr1 ?? expr2 返回其中不為空的表達(dá)式執(zhí)行結(jié)果
6.1 三目運(yùn)算符
void main(){
// 三目運(yùn)算符怒
bool flag = false;
String c;
// if(flag){
// c = "我是true";
// }else{
// c = "我是false";
// }
// print(c);
// 三目寫法
c = flag ? "我是true": "我是false";
print(c);
}
6.2 ?? 運(yùn)算符
返回其中不為空的表達(dá)式執(zhí)行結(jié)果
void main(){
// ?? 運(yùn)算符 (有點(diǎn)類似于默認(rèn)值的感覺)
int num;
int num2 = num ?? 23; // num的值為空,所以將23賦值給num2
print(num2); // 23
int a = 10;
int b = a ?? 23; // a的值不為空,所以將a的值賦值給b
print(b); // 10
}
7 .. 聯(lián)級(jí)運(yùn)算符
..:級(jí)聯(lián)操作符 .. 可以在同一個(gè)對象上 連續(xù)調(diào)用多個(gè)函數(shù)以及訪問成員變量。使用級(jí)聯(lián)操作符可以避免創(chuàng)建臨時(shí)變量,并且寫出來的代碼看起來更加流暢。
class Person{
// 屬性
String name ="小明";
int age = 18;
String sex = "男";
void getInfo(){
print("${this.name}:${this.age}:${this.sex}");
}
}
void main(){
Person student = new Person() ;
student.getInfo(); // 小明:18:男
// 修改屬性值
// student.name = "小紅";
// student.age = 14;
// student.sex = "女";
// student.getInfo(); // 小紅:14:女
// 修改多個(gè)屬性值可以使用聯(lián)級(jí)調(diào)用
// 結(jié)果完全一樣
student..name = "小紅"
..age = 14
..sex = "女";
student.getInfo(); // 小紅:14:女
}
如果class類不太明白的話也不要緊,后面會(huì)繼續(xù)講解.
8 類型判定運(yùn)算符
as, is, 和 is! 運(yùn)算符用于在運(yùn)行時(shí)處理類型檢查:
as:類型轉(zhuǎn)換
is:如果對象是指定的類型返回 True
is!:如果對象是指定的類型返回 False
具體例子參考面向?qū)ο蟮目偨Y(jié)
9 其他操作符
-
():使用方法。代表調(diào)用一個(gè)方法 -
[]:訪問 List。訪問 list 中特定位置的元素 -
.:訪問成員(屬性)。訪問元素,例如 foo.bar 代表訪問 foo對象 的 bar 成員 -
?.:條件成員訪問。和.類似,但是左邊的操作對象不能為 null,例如 -
foo?.bar如果foo為null則返回null,否則返回bar成員
