6-Flutter应用开发语言Dart语法运算符

学过其他计算机语言的一般会接触各种各样的运算符,掌握了基础,那学习Dart相关运算符就可以得心应手。了解这些有什么意义呢?在实际工作中这些场景会经常用到运算符,例如商城项目计算商品价格(主要用到算术运算符),商品满打折(用到算术运算符,关系运算符),优惠券在有效期内,购物总价格超过阈值可以使用(用到逻辑运算符,算术运算符,关系运算符)。理解这些运算符含义再 实际工作中是有非常待帮助。Dart语言常用运算符有如下这些算术运算符,关系运算符,类型判定运算符,赋值运算符,逻辑运算符,按位和移位运算符,级联运算符。

1算术运算符 +(加), –(减) ,*(乘), /(除),~/(除后返回整数),%(取余)

示例

 void testOperatorAdd(){
    var num=1;
    var num2=2;
    print("num=1 num2=2 num+num2=${num+num2}");
    print("num=1 num2=2 num~/num2=${num~/num2}");
    print("num=1 num2=2 num/num2=${num/num2}");
    print("num=1 num2=2 num-num2=${num-num2}");
    print("num=1 num2=2 num*num2=${num*num2}");
    print("num=1 num2=2 num%num2=${num%num2}");
  }
结果
num=1 num2=2 num+num2=3
num=1 num2=2 num~/num2=0
num=1 num2=2 num/num2=0.5
num=1 num2=2 num-num2=-1
num=1 num2=2 num*num2=2
num=1 num2=2 num%num2=1

关系运算符 ==, !=, > , <, >=,<=

示例

  testRelationship(){
    var num=1;
    var num2=2;
    print("num num2 ${num}==${num2} 结果 ${num==num2} ");
    print("num num2 ${num}!=${num2} 结果 ${num==num2} ");
    print("num num2 ${num}>${num2}  结果 ${num>num2} ");
    print("num num2 ${num}<${num2}  结果 ${num<num2} ");
    print("num num2 ${num}>=${num2} 结果 ${num>=num2} ");
    print("num num2 ${num}<=${num2} 结果 ${num<=num2} ");
  }
结果
num num2 1==2 结果 false
num num2 1!=2 结果 false
num num2 1>2  结果 false
num num2 1<2  结果 true 
num num2 1>=2 结果 false
num num2 1<=2 结果 true

 

2类型判定运算符as(强制类型转换),is,is!

示例

 void testLogical(){
    bool result=false;
    bool result1=true;
    print("result=false result1=true result||result1 结果 ${result||result1}");
    print("result=false result1=true result&&result1 结果 ${result&&result1}");
    print("result=false result1=true !result结果 ${!result}");
  }
结果
result=false result1=true result||result1 结果 true
result=false result1=true result&&result1 结果 false
result=false result1=true result&&result1 结果 true

3赋值运算符=, –= , /=,%=,>>=,^=,+=,*=,~/=,<<=,&=,|=

示例

testSetVal(){
    var num=1.1;
    var num2=2;
    print("num=1.1 num2=2 num–=num2 相当于num=num-num2 结果${num-=num2}");
    print("num=1.1 num2=2 num+=num2 相当于num=num+num2 结果${num+=num2}");
    print("num=1.1 num2=2 num*=num2 相当于num=num*num2 结果${num*=num2}");
    print("num=1.1 num2=2 num/=num2 相当于num=num/num2 结果${num/= num2}");
    print("num=1.1 num2=2 num~/=num2 相当于num=num~/num2 结果${num2=num2~/=1}");
    print("num=1.1 num2=2 num%=num2 相当于num=num%num2 结果${num%= num2}");
    print("num=1.1 num2=2 num<<=num2 相当于num=num<<num2 结果${num2= num2<<1}");
    print("num=1.1 num2=2 num>>=num2 相当于num=num<<num2 结果${num2= num2>>1}");

    bool resu1t=true;
    bool result1=false;
    print("resu1t=true result1=false resu1t&=result1 相当于resu1t=resu1t&result1 结果${resu1t&=result1}");
    print("resu1t=true result1=false resu1t^=result1 相当于resu1t=resu1t^result1结果${resu1t^=result1}");
    print("resu1t=true result1=false  resu1t|=result1 相当于resu1t=resu1t|result1结果${resu1t|=result1}");
  }
结果
num=1.1 num2=2 num–=num2 相当于num=num-num2 结果-0.8999999999999999
num=1.1 num2=2 num+=num2 相当于num=num+num2 结果1.1
num=1.1 num2=2 num*=num2 相当于num=num*num2 结果2.2
num=1.1 num2=2 num/=num2 相当于num=num/num2 结果1.1
num=1.1 num2=2 num~/=num2 相当于num=num~/num2 结果2
num=1.1 num2=2 num%=num2 相当于num=num%num2 结果1.1
num=1.1 num2=2 num<<=num2 相当于num=num<<num2 结果4
num=1.1 num2=2 num>>=num2 相当于num=num<<num2 结果2
resu1t=true result1=false resu1t&=result1 相当于resu1t=resu1t&result1 结果false
resu1t=true result1=false resu1t^=result1 相当于resu1t=resu1t^result1结果false
resu1t=true result1=false  resu1t|=result1 相当于resu1t=resu1t|result1结果false

4逻辑运算符 !expr, ||, &&

示例

 void testBit(){
     var num=1;
     var num1=2;
     print("num=1 and num1=1 num&num1  结果 ${num&num1}");
     print("num=1 and num1=1 num&~num1 结果 ${num&num1}");
     print("num=1 and num1=1 num|num1  结果 ${num|num1}");
     print("num=1 and num1=1 num^num1  结果 ${num^num1}");
     print("num=1 and num1=1 num<<num1 结果 ${num<<num1}");
     print("num=1 and num1=1 num>>num1 结果 ${num>>num1}");
  }
结果
void testBit(){
     var num=1;
     var num1=2;
     print("num=1 and num1=2 num&num1  结果 ${num&num1}");
     print("num=1 and num1=2 num&~num1 结果 ${num&num1}");
     print("num=1 and num1=2 num|num1  结果 ${num|num1}");
     print("num=1 and num1=2 num^num1  结果 ${num^num1}");
     print("num=1 and num1=2 num<<num1 结果 ${num<<num1}");
     print("num=1 and num1=2 num>>num1 结果 ${num>>num1}");
  }

5位运算符 &(与 ),|(或),^(异或 两个位相同为0,相异为1),~expr(取反,例如0取反为1),<<(左移),>>(右移)

这种是这样计算的 当1 与2 进行与位运算 首先底层会将1和2转成64位二进制再与运算

00...........01

&

00...........10

_____________

00...........00 最后为0

示例

 void testBit(){
     var num=1;
     var num1=2;
     print("num=1 and num1=1 num&num1  结果 ${num&num1}");
     print("num=1 and num1=1 num&~num1 结果 ${num&num1}");
     print("num=1 and num1=1 num|num1  结果 ${num|num1}");
     print("num=1 and num1=1 num^num1  结果 ${num^num1}");
     print("num=1 and num1=1 num<<num1 结果 ${num<<num1}");
     print("num=1 and num1=1 num>>num1 结果 ${num>>num1}");
  }
结果
num=1 and num1=1 num&num1  结果 0
num=1 and num1=1 num&~num1 结果 0
num=1 and num1=1 num|num1  结果 3
num=1 and num1=1 num^num1  结果 3
num=1 and num1=1 num<<num1 结果 4
num=1 and num1=1 num>>num1 结果 0

6级联运算符可以实现对同一个对像进行一系列的操作。 除了调用函数, 还可以访问同一对象上的字段属性。

示例

TestType()..result=false
   ..testBit();

相当于TestType testType=new TestType();
testType.result=false;
result=false

上一讲 5-Flutter应用开发语言Dart语法函数剖析

下一讲(待续) 7-Flutter应用开发语言Dart语法类定义

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值