第二節(jié): Dart 操作符(運(yùn)算符)

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 其他操作符

  1. ():使用方法。代表調(diào)用一個(gè)方法
  2. []:訪問 List。訪問 list 中特定位置的元素
  3. .:訪問成員(屬性)。訪問元素,例如 foo.bar 代表訪問 foo對象 的 bar 成員
  4. ?.:條件成員訪問。和 . 類似,但是左邊的操作對象不能為 null,例如
  5. foo?.bar 如果 foonull 則返回 null,否則返回 bar 成員
更多資料獲取.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容