zoukankan      html  css  js  c++  java
  • Flutter学习笔记(5)--Dart运算符

    如需转载,请注明出处:Flutter学习笔记(5)--Dart运算符

    先给出一个Dart运算符表,接下来在逐个解释和使用。如下:

     
                             描述                                                                        运算符                                              
    一元后缀 expr++  expr--  ()  []  .  ?.
    一元前缀 -expr  !expr  ~expr  ++expr  --expr
    乘法类型 *  /  %  ~/
    加法类型 +  -
    移位运算符 <<  >>
    与位运算 &
    异或位运算 ^
    或位运算 |
    关系和类型测试 >=  <=  >  <  as  is  is!
    等式 ==   !=
    逻辑与 &&
    逻辑或 ||
    条件 expr1?expr2:expr3
    级联 ..
    赋值 =  *=  /=  ~/=  %=  +=  -=  <<=  >>=  &=  ^=  |=  ??=

    注:在上面的运算符表中,操作符的优先级由上到下逐个减小,上面行内的操作符优先级大于下面行内的操作符;

    一.算数运算符

    int a = 10;
    int b = 2;
    print(a + b); //12
    print(a - b); //8   
    print(a * b); //20
    print(a / b); //5.0 这个不是整除,值是duoble类型的
    print(a ~/ b);//5 整除,余数部分舍弃取整
    print(a % b);//0 去余数
    
    var++,var--,++var,--var
    前缀的递增或递减和后缀的递增或递减和java中是一样的;
    int a = 2;
    int b = a++;//先赋值,再自增
    print(b+','+a);//2,3
    
    int a = 2;
    int b = a--;//先赋值,再自减
    print(b+','+a);//2,1
    
    int a = 2;
    int b = ++a;//再自增,先赋值
    print(b+','+a);//3,3
    
    int a = 2;
    int b = --a;//再自减,先赋值
    print(b+','+a);//1,1

    二.关系运算符

    int a = 2;
    int b = 3;
    print(a == b);//false
    print(a != b);//true
    print(a >= b);//false
    print(a <= b);//true
    print(a > b);//false
    print(a < b);//true

    三.类型测试操作符

    as,is和is!操作符在运行时用于检查类型非常方便,和java中的用法相同,含义如下所示:

          操作符                               含义          
    as 类型转换
    is 当对象是相应类型时返回true
    is! 当对象不是相应类型时返回true
    if(mClassType is User){
        //相同类型,处理一些操作
        mClassType.name = 'hello word!';
    }

    四.赋值操作符

    赋值运算没有什么好说的,这里就只强调一下??=的用法吧;

    //一般赋值操作,将value赋值给某一变量
    a = value;
    
    //??=,这个赋值操作符仅在变量为null的时候才会进行赋值
    b ??= value;//如果b为null,则将value的值赋给b,否则,b保持不变
    //前面我们有说过,在Dart里面,变量如果没有初始化赋值的话,默认值就是null,这个时候,使用??=给b赋值是可以的,如果初始化的时候就给了b一个值,那么再使用??=进行赋值,b的值是不会变的;

    五.逻辑运算符

          操作符                               含义          
    !expr 反转表达式(将false更改为true,反之亦然)
    || 逻辑或
    && 逻辑与

    六.位运算符

    final value = 0x22;
    final bitmask = 0x0f;
    
    assert((value & bitmask)  == 0x02);  //
    assert((value & ~bitmask) == 0x20);  // 与非
    assert((value | bitmask)  == 0x2f);  //
    assert((value ^ bitmask)  == 0x2d);  // 异或
    assert((value << 4)       == 0x220); // 左移
    assert((value >> 4)       == 0x02);  // 右移

    七.条件表达式

    在Dart里,和java一样有三元运算

    var result = isTrue ? 'result1' : 'result2';
    //这种是通过布尔类型进行判断,如果条件为真,返回result1,反之条件为false,则返回result2;
    
    //还有一种就是判断条件是否为空,如果数据1不为空,就返回数据1,反之,如果数据1为空,则返回数据2;
    String playerName(String name) => name ?? 'Guest';
    //如果name的值不为空,返回name的值,如果name的值为空,返回‘Guest’;

    八.级联操作

    级联操作用两个点(..)表示(严格来说的话,级联的双点符号不是运算符,这这是Dart语法的一部分),可对同一对象执行一系列操作,类似Java语言里面的点点点处理,级联操作主要目的是为了简化代码,示例如下:

    querySelector('#btnOk)//获取一个id为btnOk的按钮对象
        ..text = '确定'//给按钮设置文本为'确定'
        ..classes.add('ButtonOKStyle')//给这个按钮添加一个叫'ButtonOKStyle'的样式
        ..onClick.listen((e) => window.alert('确定'));//设置监听事件,事件弹出一个显示‘确定’的alert
    
    //这样的操作相当于如下操作:
    var button = querySelector('#btnOk);
    button.text = '确定';
    button.classes.add('ButtonOKStyle');
    button.onClick.listen((e) => window.alert('确定'));

    下一章节:Flutter学习笔记(6)--Dart流程控制语句

  • 相关阅读:
    Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点
    Asp.Net MVC3 简单入门第一季(一)环境准备
    Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter
    Entity Framework快速入门一对零到一关系处理
    Html5 学习系列(一)认识HTML5
    程序员体检完事后的感受
    Asp.Net MVC3 简单入门第一季 【索引贴】
    实在忍不住,【转】一篇好文章!题目:【转】想要成功,请记住!
    Html5 学习系列(二)HTML5新增结构标签
    大学应该怎么读?
  • 原文地址:https://www.cnblogs.com/upwgh/p/11173472.html
Copyright © 2011-2022 走看看