0%

Dart学习笔记 (二)

数组 , 字典 , 算术运算符 , 关系运算符 , 逻辑运算符 , 条件表达式 , 三目运算

List定义数组的两种方式

  • < >指限制数组内容为指定类型

  • 数组内容编号从0开始,如: 例1中111为0,abc为1,333为2

  • 例1:

    1
    2
    3
    4
    var a=[111,'abc',333];        //第一种定义数组的方式
    print(a); //输出[111 abc 333]
    print(a.length); //指数组的内容长度,有三个内容所以 输出:3
    print(a[0]); //指输出数组a中的0号内容 输出: 111
  • 例2:

    1
    2
    3
    4
    5
    var b=new List<String>();     //第二种定义数组的方式 < >表示限定内容为String字符串内容
    b.add('张三'); //第二种方法需要用.add方法或者.addall方法给数组添加内容
    b.add(123); //数组b限制内容为字符串类型 123因为没有带引号所以是数值内容 所以是错误的 X
    b.add('李四');
    print(b[1]); //输出数组b的1的内容 因为b.add(123);是错误的内容 需要删除掉 所以1为李四 输出:李四

Map定义集合的两种方式

  • 例1:

    1
    2
    3
    4
    5
    6
    7
    8
    var person={   
    'name':'张三', //定义key'name'的value(内容)为张三
    'age':20 //定义key'age'的value(内容)为20
    };
    print(person); //输出:{name:张三,age:20}
    print(person['name']); //输出name的value: 张三
    print(person['age']); //输出age的value: 20
    print(person['张三']); //不能使用value来输出key 所以是错误的 X
  • 例2:

    1
    2
    3
    4
    5
    6
    7
    var p=new Map();
    p['name']='李四'; //name为key 李四为value
    p['age']=20;
    p['work']=['送外卖','程序员']; //同时可在map中掺杂list数组 即work的value可以是一个数组
    print(p); //输出: {name:李四,age:20,work:[送外卖,程序员]}
    print(p['work']); //单独打印map p中的work的value 输出数组: [送外卖,程序员]
    print(p['work'][0]); //也可以只打印key work的数组value中的0 输出: 送外卖

    is判断语句

    • 通过 ‘ is ‘ 关键词判断类型: 当你不知道服务器返回的数据是什么类型可以通过is关键词判断数据类型 例如:

      1
      2
      3
      4
      5
      6
      7
      8
      var str='123';                      //定义str为 字符串类型内容是123
      if(str is String){ //如果str is String
      print('str是String类型'); //就打印输出
      }else if(str is int){ //否则 如果 str is int
      print('str是int类型'); //就打印输出
      }else{ //否则
      print('其他类型'); //打印输出
      } //因为是字符串类型所以 输出: str是String类型关系运算符

关系运算符

  • 关系运算符有:

    ==(等于) , !=(不等于) , >(大于) , <(小于) , >=(大于等于) , <=(小于等于)

逻辑运算符

  • 逻辑运算符有:

    !(取反) , &&(并且) , ||(或者)

  • 或者||: 全部为false的话值为false,否则值为true

  • 并且&&: 全部为true的话值为true,否则值为false

赋值运算

  • 赋值运算有:

    = , ??= , ??

  • ??= :表示如果b为空的话吧23赋值给b

    1
    2
    3
    4
    1:                                           例2:
    int b; //定义一个int类型的b 没有赋值 int b=3; //定义一个int类型b 赋值3
    b??=23; //b??=23 b??=23; //b??=23
    print(b);//因为b没有赋值所以输出: 23 print(b); //因为b有赋值3 所以输出: 3
  • ??: 表示如果 a??10 a为空,则吧10赋予a,如果a自有数值则不赋予,例1:

    1
    2
    3
    var a;          //定义一个a 内容为空
    var b=a??10; //b=a??10 从右往左看先看a??10,因为a为空所以吧10赋予a 然后在看b=a 所以b=10
    print(b); //输出: 10

    例2:

    1
    2
    3
    var a=22;      //赋值a=22
    var b=a??10; //因为a有内容所以并不会吧10赋予a所以a=22 所以b=a的时候b=22
    print(b); //输出: 22

复合赋值运算

  • += , -= , *= , /= , %=(取余) , ~/=(取整)

    1
    2
    3
    a+=10  //表示a=a+10;
    a*=10 //表示a=a*10;
    a~/=10 //表示a=a~/10;

条件表达式

  • 条件表达式有很多种

    如:’if….else’ ‘switch…..case’

  • switch….case的使用方法如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var sex='女';                 //switch(开关)   case(具体,事例)
    switch(sex){ //switch sex
    case'男': //case 男
    print('他是男的'); //打印输出
    break; //结束
    case'女': //case 女
    print('她是女的'); //打印输出
    break; //结束
    default: //如果两个case都不对
    print('传入数据错误'); //打印输出
    break; //结束
    } //因为case是女所以输出: 她是女的

三目运算

  • 例1: 如果flag=true,吧’我是true’赋予c

    1
    2
    3
    4
    5
    6
    7
    8
    bool flag=true;          //bool类型flag定义为true
    var c; //定义一个C 内容为空
    if(flag){
    c='我是true';
    }else{
    c='我是false';
    }
    print(c); //输出: 我是true

    吧正常if else 转换为三目预算来减化为:

    1
    2
    3
    bool flag=true;
    String c=flag?'我是true':'我是false'; //?为if,:为else
    print(c); //输出: 我是true
-------------本文有底学海无涯-------------