Dart語(yǔ)言基礎(chǔ)(三)之運(yùn)算符

下面我就講一下dart的算數(shù)運(yùn)算符,基本上任何語(yǔ)言的算數(shù)運(yùn)算符大同小異,每個(gè)語(yǔ)言或許有一些特殊的算數(shù)運(yùn)算符,dart語(yǔ)言也有。

算數(shù)運(yùn)算符

  • 加減乘除整除取余: +、-、*、/、~/、% //上一章節(jié)講過(guò),

      int a = 10;
      int b = 2;
      print(a + b); //12
      print(a - b); //8   
      print(a * b); //20
      print(a / b); //5.0 這個(gè)不是整除,值是duoble類型的
      print(a ~/ b);//整除,余數(shù)部分舍棄取整 5
      print(a % b);//去余數(shù) 0
    
  • 遞增遞減:++var、var++、--var、var--, 前++、-- 和后 ++、--的區(qū)別,大家已經(jīng)看到,特別容易混淆,我就詳細(xì)的講一下

    • var++、var-- 是先賦值再++、--
    • ++var、--var 是先++、--再賦值
    int a = 10;
    print(a++); //10 先賦值再++
    print(++a); //12 這個(gè)時(shí)候a就是11了先++在賦值所以是12  
    
    print(a--); //12 先賦值再--,所以還是12
    print(--a); //10  這個(gè)時(shí)候a值就是11了,然后先--再賦值
    
    int b = 10;
    int c = b ++; //先賦值在++
    print(b); //11 已經(jīng)賦完值了b這時(shí)候就是11
    print(c);   //10 因?yàn)槭窍荣x值,c就是10
    
    int d = ++b; //先++在賦值 
    print(b); //12
    print(d);   //12
    
    int e = b--; 
    int f = --d;
    print(e); //12
    print(f);   //11 
    
    

關(guān)系運(yùn)算符

  • 運(yùn)算符:==、!=、>、<、>=、<=

  • 判斷內(nèi)容是否相同使用==

      int a = 2;
      int b = 5;
      print(a == b); //false
      print(a != b); //true
      
      print(a > b); //false
      print(a < b); //true 
      
      print(a >= b); //false
      print(a <= b); //true
      
      String str1 = 'dart';
      String str2 = 'java';
      print(str1 == str2); //false (==表示內(nèi)容相等)
    

邏輯運(yùn)算符

  • 運(yùn)算符:!、&&、|| (取非、與、或)

  • &&兩邊取值都是為真才為真、||兩邊只要有一個(gè)為真就為真

  • 針對(duì)布爾類型運(yùn)算

      bool isTrue = true;
      print(!isTrue); //false
      
      bool b1 = false;
      bool b2 = true;
      print(isTrue && b1); //false
      print(isTrue && b2); //true
      
      print(isTrue || b1); //true
      print(isTrue || b2); //true
      print(!isTrue||b1);  //false
    

賦值運(yùn)算符

  • 基礎(chǔ)運(yùn)算符:=、??=(當(dāng)變量沒(méi)有賦值的情況賦值,有值就不賦值了)

      int b;
      b ??= 10;
      print(b); //10 b沒(méi)有被賦值
      
      b ??= 5;
      print(b); //10 已經(jīng)有值了就不賦值了
      
      int c = 20;
      c ??= 10;
      print(c); //20 初始化c的時(shí)候已經(jīng)賦值  
      
      var str = 'java'; 
      str ??= 'dart';
      print(str); //java 已經(jīng)賦值java
      
      var str1;
      str1 ??= 'dart';
      print(str1); //dart 初始化沒(méi)有賦值
    
  • 復(fù)合運(yùn)算符:+=、-=、*=、/=、~/=、%=

      int a = 10;
      a += 2;
      print(a); //12 a=a+2    
    
      a -= 2; 
      print(a); //10 a=a-2
    
      a *= 2; 
      print(a); //20 a=a*2
    
      a ~/= 2; 
      print(a); //10 a=a~/2
    
      a %= 2; 
      print(a); //0 a=a%2
      
      a /= 2; //會(huì)報(bào)錯(cuò),a=a/2 a是int a/2是double類型。
      
      //聲明變量是double就可以了   
      double b = 5.0;
      b /= 2; 
      print(b); //2.5 b=b/2
      
      //聲明變量是num類型也可以,num包含int num類型
      num c = 10;
      c /= 2;
      print(c); //5.0 
    

條件表達(dá)式

  • 三目運(yùn)算符:condition ? expr1 : expr2

      int a = 3;
      int b = (a == 3 ? 4 : 5); //a==3為真執(zhí)行4,不為真執(zhí)行5
      print(b); //4
    
      String str = (a == 3 ? '執(zhí)行條件為真' : '執(zhí)行條件為非真');
      print(str); //執(zhí)行條件為真
    
  • c=a??b,a值不為空返回a,a值為空?qǐng)?zhí)行返回b值。

      int a;
      int b = 10;
      int c = a??b;
      print(c); //10; a為空,返回的b值
      
      String strA;
      String strB = 'java';
      String strC = strA??strB;
      print(strC); //java
    

控制流語(yǔ)句

  • 條件語(yǔ)句:if、if...elseif、if...elseif...else

      int score = 90;
      if (score >=90) {
          print('優(yōu)秀');
      } else if (80>=score && score<90) {
      print('良');
      } else if (60>=score && score<80) {
      print('及格');
      } else {
       print('不及格');
      } //優(yōu)秀  
    
  • 循環(huán)語(yǔ)句:for、forin

      //使用for循環(huán)
      var list = [1,2,3];
      for(var i=0; i<list.length; i++)    {
      print(list[i]);
      }
      //使用forin循環(huán)
      for (var item in list) {
          print(item);
      }
      /*
          1
          2
          3
      */
    

*循環(huán)語(yǔ)句:while循環(huán)、do...while循環(huán)

    //while 先判斷條件在執(zhí)行
    int i = 0;
    while (i < 2) {
        print(i++);
    };
    /*
        0,
        1
    *
    //這時(shí)候i=2
    //do...while 先執(zhí)行一次在判斷條件,至少執(zhí)行一次
     do {
        print(i--);
    } while (i > 0 && i < 3); 
    
    /*
        2,
        1
    */
  • 終止當(dāng)前循環(huán):break 終止離break最近的循環(huán),只能終止一層循環(huán)

      //當(dāng)i==2時(shí)候已經(jīng)終止循環(huán)了
      for (var i = 0; i < 4; i++) {
          if (i == 2) {
              break;
          }
          print(i);
      } 
      /*
          0,
          1
      */
                  
      //break終止的只是當(dāng)前循環(huán),只能終止一層循環(huán)
      for (var i = 0; i < 2; i++) {
          for (var j = 0; j < 4; j++) {
              if (j == 1) {
                  break;
              }
              print('[$i,$j]');
          };
      };
      /*
          [0,0]
          [1,0]
          */
    
  • 跳出當(dāng)前循環(huán):continue 跳出當(dāng)前循環(huán)并且只能跳出一層循環(huán)

      //當(dāng)i==2時(shí)候已經(jīng)跳出循環(huán),執(zhí)行下一次循環(huán)
      for (var i = 0; i < 4; i++) {
          if (i == 2) {
              continue;
          }
          print(i);
      } 
      /*
          0,
          1,
          3
      */
                  
      //contiue跳出的只是當(dāng)前循環(huán),只能跳出一層循環(huán)
      for (var i = 0; i < 2; i++) {
          for (var j = 0; j < 4; j++) {
              if (j == 1) {
                  continue;
              }
              print('[$i,$j]');
          };
      };
      /*
              [0,0]
              [0,2]
              [0,3]
              [1,0]
              [1,2]
              [1,3]
          */
    

switch...case語(yǔ)句

  • 比較類型可以有:num、String、編譯期常量、對(duì)象、枚舉

  • 非空case必須有一個(gè)默認(rèn)情況

  • default 處理默認(rèn)情況

  • continue 跳轉(zhuǎn)標(biāo)簽

      //language 也可以是num、String、編譯期常量、對(duì)象、枚舉這幾種類型
      String language = 'java';
      switch(language) {
          case 'dart':
              print('dart language');
              break;
          case 'java':
              print('java language');
              break;
          case 'python':
              print('python language');
              break;
          default:
              print('none');
      } //java language
      
      /*
          用continue跳轉(zhuǎn)到位置執(zhí)行最近的case
          TopTest名字可以隨便起  
      */
      switch(language) {
          
          case 'dart':
              print('dart language');
              break;
          case 'java':
              print('java language');
              continue TopTest
              //break;
          case 'python':
              print('python language');
              break;
          TopTest:
          default:
              print('none');
      } 
      /*
          java language
          none
      */
    

assert 中斷代碼流

  • 如果一個(gè)布爾條件值為false,使用assert語(yǔ)句來(lái)中斷正常執(zhí)行的代碼

  • Assert語(yǔ)句僅僅只能在調(diào)試模式下使用,在生產(chǎn)模式下沒(méi)有任何作用。

  • 在assert語(yǔ)句后面的括號(hào)中,你可以加入任何表示布爾值或者函數(shù)的表達(dá)式。

  • 如果表達(dá)式的值或者函數(shù)返回值true,則assert語(yǔ)句成功并繼續(xù)執(zhí)行代碼。如果值為false,則assert語(yǔ)句失敗并拋出一個(gè)異常

      //確保這個(gè)變量不為空值. 
      assert(text != null);
      
      //確保這個(gè)變量小于100. 
      assert(number < 100);
      
      //確保它是一個(gè)https協(xié)議類型的URL. 
      assert(urlString.startsWith(‘https’));
    

結(jié)尾

上面的大部分內(nèi)容的運(yùn)算符大家應(yīng)該都很熟悉,就有幾個(gè)是dart特有的,大家把特有的好好記住以下,其他的就當(dāng)溫故而知新吧。

下一章節(jié)講解Dart語(yǔ)言(四)之函數(shù)方法(Function)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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