美文网首页
Dart 学习笔记(一):基本数据类型和运算符

Dart 学习笔记(一):基本数据类型和运算符

作者: love断鸿 | 来源:发表于2019-12-09 15:30 被阅读0次

    最近这几天看了下Dart的数据类型和运算符, 总的来说和其他语言差别不大,先简单的记录一下, 以后我会抽时间着重的介绍

    变量

    Dart 是脚本语言 可以不预先定义变量类型, 可以类型推断

    var str = 'string' // var修饰的变量总动识别变量类型
    String str = 'string'// 直接指定变量类型
    // 1: 注意 写了var 和类型不要同时写 同时写就会报错
    // 2: 用var 定义变量的时候 会自动推断类型(用 String 和int 定义变量的时候 会进行类型校验) 
    // 3: 使用var定义变量;可以不指定初始值,默认为null;可以给var定义的变量赋不同类型的值;
    // 4: 个人建议在编码的时候如果可以确定变量类型,还是不要用var
    
    注意:var在赋值之后 变量类型就确定了,不可更改。如果不确定变量类型是不是唯一,那么需要用dynamic或Object来修饰
    Object name1 = 1;// 也可以用dynamic来修饰
    name1 = 'ss'; //如果用var修饰 这里会报错
    print(name1);
    
    这里凸显了Dart的动态性, 用dynamic或Object修饰的变量可以更改类型

    常量

    定义后不可被更改,用const和final初始化

    final age = 20;
    // 或
    const age = 170;
    
    // 两者区别:
    // 1: const是编译时常量,在编译时值就要确定下来
    //    final运行时常量
    // 2: 只初始化一次(懒加载) 这个值可以在运行时确定
    var num = 10;
    final num1 = num;// 这样修饰是可以的, 这时num是变量 而num1是常量
    // const num1 = num;  这样是不行的
    num = 20 // 不会报错
    num1 = 30 // 会报错
    // 如果把num1 = 30 注释掉 程序可以正常运行
    // 然后
     print(num);
     print(num1);
    可以得到
    num = 20
    num1 = 10
    // 可见 final的意思是: 将变量的num的值赋常量num1, 而且这一步是在运行时进行的
    

    数组(List)

    初始化
    var li1 = ['111', '111', '111']
    // 或者
    var l2 = new List();
    l2.add('张三');
    l2.add('李四');
    l2.add('王五');
    print(l2);
    print(l2[2]);
    

    maps 类型 (类似json)

     var preson = {
        'name' : '张三',
        'age' : 20,
        'work' : ['iOS', 'Java']
       };
     print(preson);
     print(preson['name']);
    

    类型转换

    //类型转换 (num 为 int或double)
    // string -> num 
    var price = "123";
    var myNum = double.parse(price);
    
    // num -> string
    var num = 123;
    var str = num.toString();
    

    is 可以判断变量是那种类型

    var str = "123";
    
    if(str is String) {
    }
    
    if(str is int) {
    }
    

    各种运算符

    运算符在各种语言里都大同小异,还是简单的记录下吧

    算术运算符
    int a = 1;
    int b = 2;
    //加
    print(a + b);
    //减
    print(a - b);
    //乘
    print(a * b);
    //除
    print(a / b);
    //取整
    int result = a ~/ b;
    print(result);
    //取余
    print(a % b);
    //自增
    //前++,先给函数打印,后自增
    print(a++);
    //后++,先自增,再给函数打印
    print(++a);
    //先给函数打印,再自减
    print(a--);
    //先自减,再给函数打印
    print(--a);
    
    复合运算符
    a += 2;
    print(a);
    
    a -= b;
    print(a);
    
    a *= b;
    print(a);
    
    print(a /= b);
      
    print(a %= b);
    
    关系运算符
    //判断是否相等
    print(a == b);
    //判断是否不相等
    print(a != b);
    //是否大于
    print(a > b);
    //是否小于
    print(a < b);
    //是否大于等于
    print(a >= b);
    //是否小于等于
    print(a <= b);
    
    //双等号判断内容相等
    String strA = '123';
    //String strB = '321';
    String strB = '123';
    print(strA == strB);
    
    逻辑运算符
    bool isTrue = true;
    //取反
    print(!isTrue);
    
    //并且
    bool isFalse = false;
    print(isTrue && isFalse);
    
    //或者
    print(isTrue || isFalse);
    
    //日常取反用途
    String str = "";
    print(!str.isEmpty);
    
    三目运算符
    //int gender = 0;
    int gender = 1;
    //String str = gender == 0 ? 'Male' : 'Female';
    //还可以加上插值表达式
    String str = gender == 0 ? 'Male=$gender' : 'Female=$gender';
    print(str);
    
    最后介绍下Dart当中比较有特色的?? 和 ??=
    // ??表达式,如果??前面的表达式为null,则使用??后面的值
    String a;
    //String a = 'Dart';
    String b = "Java";
    //a为null,所以会使用b的值返回
    String c = a ?? b;
    print(c);
    // ??=  和?? 差不多
    int b
    b ??= 23;
    // 如果b没被赋值 则把23赋给b
    

    备注:以上关于运算符的部分是借用别人的文章

    https://www.jianshu.com/p/7a95badee480

    相关文章

      网友评论

          本文标题:Dart 学习笔记(一):基本数据类型和运算符

          本文链接:https://www.haomeiwen.com/subject/conxgctx.html