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流程控制语句

  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/upwgh/p/11173472.html
Copyright © 2011-2022 走看看