6-Flutter应用开发语言Dart语法运算符_IT小分享的博客-程序员宅基地

学过其他计算机语言的一般会接触各种各样的运算符,掌握了基础,那学习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语法类定义

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dbcjh/article/details/108597569

智能推荐

JS中的同步异步编程-微任务-宏任务_u012352278的博客-程序员宅基地

浏览器是多线程的1. GUI渲染线程2. HTTP网络请求线程(并发数6~7)3. 事件监听\定时器监听…JS代码的运行是单线程的:浏览器只分配一个GUI渲染线程去执行我们的JS代码1. 对于大部分JS代码来讲上面代码没有执行完,下面代码是不能执行的 “同步编程”2. 但是对于某些JS代码来讲(事件绑定、定时器、Promise/async/await、Ajax等),我们需要在上面代码没有处理的情况下,GUI渲染线程能够继续向下执行 “异步编程”console.time('AAA');//..

了解计算机网络拓扑结构,了解计算机网络的​拓扑结构_如月更纱的博客-程序员宅基地

计算机网络拓扑结构是指由计算机组成的网络之间设备的分布情况以及连接状态,把它两画在图上就成了拓朴图。一般在图上要标明设备所处的位置,设备的名称类型以及设备间的连接介质类型,它分为物理拓朴和逻辑拓朴两种。根据福建省教招考试大纲的要求,今天我们一起来了解计算机网络的拓扑结构吧!一、认识计算机网络的拓扑结构即是指网上计算机或设备与传输媒介形成的结点与线的物理构成模式。网络的结点有两类:一类是转换和交换信...

Linux-centos安装Redis_weixin_34355881的博客-程序员宅基地

Redis作为现在最流行的缓存服务器,当然是要学习一下的,正好有阿里云的服务器,索性直接在服务器上安装了系统 centOS 7.1安装的Redis 5.0.4在centos上安装软件可以使用yum 安装,但是安装Redis需要配置源,挺麻烦的,索性直接使用源码安装吧,Redis官网也是推荐使用源码安装。1. 下载Redis源码。推荐去Redis官...

Android 手机上安装并运行 Ubuntu 12.04_weixin_30430169的博客-程序员宅基地

ubuntu.sh脚本的原地址变动了,导致下载不了,现在更新了网盘地址。小技巧:遇到一些下载失效的时候可以试一试p2p下载工具(如 easyMule、迅雷等)试一试,说不定有人分享过~* ————————————————————————————- Android 是基于Linux内核的开源操作系统,主要用在移动设备上。当然同样是基于Linux内核的操作系统,现在支持的Android...

Linux 安装lrzsz_公子专栏-程序员宅基地

安装lrzszsudo yum install -y lrzsz现在就可以在 linux 上正常使用rz、sz命令上传、下载数据了。## 使用方法:# 上传文件rz filename# 下载文件sz filename

UML时序图总结_chenglinhust的专栏-程序员宅基地

UML时序图总结时序图简介首先,时序图用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或者状态机中引起转换的事件;其次,时序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。时序图属于动态建模;最后,时序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传递消息的时间顺序。还有,

随便推点

sina vistor system_枝寒不栖-程序员宅基地

0x00 前言一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过……当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~应该是今年的早些时候,新浪引入了一个Sina Visitor System(新

linux把redis安装到哪个目录,Redis 安装_成增存的博客-程序员宅基地

Redis 安装Windows 下安装Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。打开文件夹,内容如下:打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行: redis-server.exe redis.windows.conf如果...

20_集合_第3天(Map、可变参数、Collections)_易天殇的博客-程序员宅基地

第20天 集合 Map接口 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对...

spring中banner.txt和配置和学习文档_weixin_33882452的博客-程序员宅基地

banner.txt为设置启动的图标http://patorjk.com/software/taag/#p=display&amp;h=3&amp;v=3&amp;f=4Max&amp;t=itcast%20Spring%20Boot放入到src/resources/banner.txt public static void main( String[] args ) ...

pip install error_menglanzeng的博客-程序员宅基地

安装SEC,DSRG三维CRF时,问题:[email protected]:~/user_space/SGAN$ pip3 install CRF/Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simpleProcessing ./CRF ERROR: Command errored out with exit s...

vue 插件 toast_vue2的移动Toast插件_cuk5239的博客-程序员宅基地

vue 插件 toast vue2-烤面包 (vue2-toast)A mobile toast plugin for vue2. vue2的移动Toast插件。 View demo查看演示 Download Source 下载源 用法 (Usage)Install: 安装: npm install vue2-toast -SImport: 进口: import 'vue2...

推荐文章

热门文章

相关标签