带你读《深入浅出Dart》三、运算符

简介: 带你读《深入浅出Dart》三、运算符

三、运算符

运算符是一种特殊的符号,用于检查,更改或结合值。Dart语言中的运算符主要包括以下几类:

1. 算术运算符

算术运算符用于进行数学运算。Dart中的算术运算符有 +(加),-(减),*(乘),/(除),%(取余)以及~/(取整)。

 

var a = 10;
var b = 2;
print(a + b); // 输出:12
print(a - b); // 输出:8
print(a * b); // 输出:20
print(a / b); // 输出:5.0
print(a % b); // 输出:0
print(a ~/ b); // 输出:5

2. 关系运算符

关系运算符用于比较两个值。Dart中的关系运算符有 ==(等于),!=(不等于),>(大于),<(小于),>=(大于或等于),<=(小于或等于)。

 

var a = 10;var b = 2;
print(a == b); // 输出:falseprint(a != b); // 输出:trueprint(a > b); // 输出:trueprint(a < b); // 输出:falseprint(a >= b); // 输出:trueprint(a <= b); // 输出:false

3. 逻辑运算符

逻辑运算符主要用于Boolean类型的操作,但也可以用于非Boolean类型。Dart中的逻辑运算符有 &&(逻辑与),||(逻辑或),!(逻辑非)。

var a = true;var b = false;
print(a && b); // 输出:falseprint(a || b); // 输出:trueprint(!a); // 输出:false

4. 赋值运算符

赋值运算符用于给变量赋值。Dart中的赋值运算符有 =,+=,-=,*=,/=,%=,~/=

 

var a = 10;var b = 2;
a = b;print(a); // 输出:2
a += b;print(a); // 输出:4
a -= b;print(a); // 输出:2
a *= b;print(a); // 输出:4
a ~/= b;print(a); // 输出:2
a %= b;print(a); // 输出:0

5. 条件运算符

Dart提供了两种类型的条件运算符,分别是 ? : ??。其中 ? : 可以在基于条件的情况下返回两个值中的一个,?? 用于在第一个操作数为null时返回第二个操作数。

 

var a = 10;var b = null;
print(a > 10 ? 'a is greater than 10' : 'a is not greater than 10'); // 输出:a is not greater than 10
print(b ?? 'default value'); // 输出:default value

6. 类型测试运算符

类型测试运算符用于检查对象的类型。Dart中的类型测试运算符有 isis!

 

var a = 10;
print(a is int); // 输出:true
print(a is! String); // 输出:true

7. 位运算符

位运算符用于对整数进行二进制位运算。Dart中的位运算符有 &(与),|(或),^(异或),~(非),>>(右移),<<(左移)。

 

var a = 10; // 二进制形式:1010
var b = 2; // 二进制形式:0010
print(a & b); // 输出:2
print(a | b); // 输出:10
print(a ^ b); // 输出:8
print(~a); // 输出:-11
print(a >> b); // 输出:2
print(a << b); // 输出:40

 

这些都是Dart语言中的基本运算符,熟悉这些运算符可以帮助我们更好地理解和编写Dart程序。


速查表

以下列出了 Dart 的运算符,从高到低按照优先级排列:

 

描述

运算符

一元运算符(后置)

++ -- ( ) [ ] . ?.

一元运算符(前置)

- ! ~ ++ --

乘法运算符

* / % ~/

加法运算符

+ -

移位运算符

<< >>

按位与

&

按位异或

^

按位或

|

关系与类型检测

>= > <= < as is is!

逻辑与

&&

逻辑或

||

是否为null

??

条件运算符

? :

级联运算符

..

赋值运算符

= *= /= ~/= %= += -= <<= >>= &= ^= |= ??=

 

与其他类语言比较,Dart的运算符大同小异,这里只选出部分Dart特有的运算符(上表中使用斜粗体的运算符)进行讲解:

 

运算符

介绍

示例

?.

点符号前加问号,表示当前调用只在被访问者不为null的情况下才执行

var upper = name?.toUpperCase();

is is!

检查对象是否属于或不属于某种类型

if (name is String) { ... }

as

将对象转换为某类型,如果转换失败将抛出异常

name as String

??

空值检测,如:a1 ?? a2 ,表示如果a1不为null,则直接返回a1的值,否则返回a2的值

var message = input ?? 'Hello';

..

级联操作符,用于对同一对象执行一系列操作(链式操作),避免创建多余的临时变量

不使用级联:person.name = 'bob'; person.age = 28; 使用级联:person..name = 'bob' ..age = 28;

??=

空值判断赋值,只在左值为null的情况下才执行赋值操作

message ??= 'Hello';

 

 


相关文章
|
Go 开发工具 C语言
flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1
1994 0
flutter项目打包.exe文件发布windows版
|
传感器 前端开发 Android开发
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求。本文深入探讨了插件开发的基本概念、流程、集成方法、常见类型及开发实例,如相机插件的开发步骤,同时强调了版本兼容性、性能优化等注意事项,并展望了插件开发的未来趋势。
374 2
|
Java 开发工具
鸿蒙Flutter实战:02-Windows环境搭建踩坑指南
本指南介绍如何搭建鸿蒙Flutter开发环境,包括下载Flutter SDK、配置环境变量(如FLUTTER_STORAGE_BASE_URL、PUB_HOSTED_URL、DEVECO_SDK_HOME等)和检查工具版本。还提到避免项目路径过深、与SDK同盘存放等注意事项,以及解决VsCode无法识别设备的方法。
615 0
Flutter 中使用 ICON
Flutter 中使用 ICON
558 5
Flutter 中使用 ICON
|
Dart 前端开发 Android开发
Flutter的架构层
Flutter的架构层
224 1
|
Dart JavaScript 前端开发
Flutter 的 Widget 概述与常用 Widgets 与鸿蒙 Next 的对比
Flutter 是 Google 开发的开源 UI 框架,用于快速构建高性能的移动、Web 和桌面应用。Flutter 通过 Widget 构建 UI,每个 UI 元素都是 Widget,包括文本、按钮、图片等。Widget 不仅描述外观,还描述行为,是不可变的。常见的 Widget 包括结构型(Container、Column、Row)、呈现型(Text、Image)、交互型(ElevatedButton)和状态管理型(StatefulWidget)。Flutter 与鸿蒙 Next 在组件化架构、开发语言、布局系统、性能和跨平台支持方面各有优势
428 0
|
开发框架 API 开发者
Flutter表单控件深度解析:从基本构建到高级自定义,全方位打造既美观又实用的移动端数据输入体验,让应用交互更上一层楼
【8月更文挑战第31天】在构建美观且功能强大的移动应用时,表单是不可或缺的部分。Flutter 作为热门的跨平台开发框架,提供了丰富的表单控件和 API,使开发者能轻松创建高质量表单。本文通过问题解答形式,深入解读 Flutter 表单控件,并通过具体示例代码展示如何构建优秀的移动应用表单。涵盖创建基本表单、处理表单提交、自定义控件样式、焦点管理和异步验证等内容,适合各水平开发者学习和参考。
511 0
|
存储 Dart 数据管理
Flutter笔记:目录与文件存储以及在Flutter中的使用(上)
Flutter笔记:目录与文件存储以及在Flutter中的使用(上)
1006 0
|
Android开发 开发者
flutter 开发环境配置和生命周期学习
flutter 开发环境配置和生命周期学习
Dart编程入门:main方法、变量、常量和注释
Dart编程入门:main方法、变量、常量和注释
199 0