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