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

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

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

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

一.算数运算符

;
;
print(a + b);
print(a - b); //8
print(a * b);
print(a / b); //5.0 这个不是整除,值是duoble类型的
print(a ~/ b);//5 整除,余数部分舍弃取整
print(a % b);//0 去余数

var++,var--,++var,--var
前缀的递增或递减和后缀的递增或递减和java中是一样的;
;
int b = a++;//先赋值,再自增
print(b+','+a);//2,3

;
int b = a--;//先赋值,再自减
print(b+','+a);//2,1

;
int b = ++a;//再自增,先赋值
print(b+','+a);//3,3

;
int b = --a;//再自减,先赋值
print(b+','+a);//1,1

二.关系运算符

;
;
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 << )       == 0x220); // 左移
assert((value >> )       == 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学习笔记(5)--Dart流程控制语句

Flutter学习笔记(5)--Dart运算符的更多相关文章

  1. Flutter学习笔记(8)--Dart面向对象

    如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...

  2. Flutter学习笔记(4)--Dart函数

    如需转载,请注明出处:Flutter学习笔记(4)--Dart函数 Dart是一个面向对象的语言,所以函数也是对象,函数属于Function对象,函数可以像参数一样传递给其他函数,这样便于做回调处理: ...

  3. Flutter学习笔记(6)--Dart异常处理

    如需转载,请注明出处:Flutter学习笔记(6)--Dart异常处理 异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止: Dart代码可以抛出并捕获异常,但 ...

  4. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

  5. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  6. Flutter学习笔记(11)--文本组件、图标及按钮组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...

  7. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  8. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  9. C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2

    C#.NET学习笔记7---算术运算符 2013/9/6 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 1.Consol ...

随机推荐

  1. 两种让tableview返回顶部的方法

    1. [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:_currentRow inSection:0] animat ...

  2. [moka同学收藏]Yii2.0 rules验证规则

    required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...

  3. [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. C#与C++(结构体内对象指定大小)

    C++结构体:struct DATAAREA { // 报警协议数据区结构 char szAlarmNo[20]; // 报警编号(必填) char szUserNo[10]; // 用户编号(必填) ...

  5. JQuery自学代码---(一)

    /** * Created by wyl on 15-3-4. */ //Jquery是一个JavaScrioe库,它极大的简化了JavaScript编程 $(document).ready(func ...

  6. 64位内核注冊tty设备

    在64位系统中,注冊tty设备须要注意的是,Android跑在EL0而且在32位模式下,kernel跑在EL1而且在64位模式下,不但内核须要打开CONFIG_COMPAT选项,非常多android上 ...

  7. String与string的区别(注意大小写)

    在C#编程过程中经常见到string和String,下面来看看它们之间的区别: 1. string是C#中的类, String是.net Framework的类. string是String的别名,S ...

  8. java中super关键字

    1.子类的构造函数如果要引用super的话,必须把super放在函数的首位,如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为 ...

  9. LeetCode题解之 Find the Town Judge

    1.题目描述 2.问题分析 使用map set数据结构. 3.代码 int findJudge(int N, vector<vector<int>>& trust) { ...

  10. 六、input框中的数字(金额)只能输入正整数

    <input type="text" placeholder="请输入整数" onkeyup="this.value=this.value.re ...