【Flutter】Dart:运算符
在 Dart 中,运算符是非常重要的组成部分,它们可以对变量和常量进行多种运算操作。理解和掌握 Dart 中的各种运算符不仅可以帮助你编写更加高效、简洁的代码,还能更好地理解其背后的逻辑和设计。本文将深入探讨 Dart 中的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符以及测试类型运算符等。
算术运算符
算术运算符用于基本的数学计算,如加法、减法、乘法等。Dart 提供了以下几种常见的算术运算符:
+:加法-:减法*:乘法/:除法,结果为浮点数~/:整除,结果为整数%:取模运算,返回余数
int a = 10;
int b = 3;int sum = a + b; // 加法,sum = 13
int difference = a - b; // 减法,difference = 7
int product = a * b; // 乘法,product = 30
double quotient = a / b; // 除法,quotient = 3.3333...
int intQuotient = a ~/ b; // 整除,intQuotient = 3
int remainder = a % b; // 取模,remainder = 1
关系运算符
关系运算符用于比较两个值,并返回布尔值 true 或 false。常见的关系运算符有:
==:等于!=:不等于>:大于<:小于>=:大于或等于<=:小于或等于
int x = 5;
int y = 10;print(x == y); // false
print(x != y); // true
print(x > y); // false
print(x < y); // true
print(x >= 5); // true
print(y <= 10); // true
逻辑运算符
逻辑运算符用于布尔值之间的逻辑运算,主要包括:
&&:逻辑与(AND),只有两个操作数都为true时,结果为true||:逻辑或(OR),只要有一个操作数为true,结果为true!:逻辑非(NOT),将布尔值取反
bool isFlutterFun = true;
bool isDartHard = false;print(isFlutterFun && !isDartHard); // true
print(isFlutterFun || isDartHard); // true
print(!isFlutterFun); // false
位运算符
位运算符用于对整数的二进制位进行操作。Dart 支持以下位运算符:
&:按位与|:按位或^:按位异或~:按位取反<<:左移>>:右移
int a = 5; // 二进制为 0101
int b = 3; // 二进制为 0011print(a & b); // 按位与,结果为 1(二进制为 0001)
print(a | b); // 按位或,结果为 7(二进制为 0111)
print(a ^ b); // 按位异或,结果为 6(二进制为 0110)
print(~a); // 按位取反,结果为 -6
print(a << 1); // 左移一位,结果为 10(二进制为 1010)
print(a >> 1); // 右移一位,结果为 2(二进制为 0010)
条件运算符(三元运算符)
条件运算符,也称三元运算符,用于根据条件返回不同的结果。它的语法是:
condition ? expr1 : expr2
如果 condition 为 true,则返回 expr1;否则,返回 expr2。
int a = 5;
int b = 10;String result = (a > b) ? 'a is greater' : 'b is greater';
print(result); // 输出 b is greater
空安全运算符
Dart 中还有一些空安全运算符,用于处理可能为 null 的变量:
??:如果左侧为null,则返回右侧值??=:如果变量为null,则赋值?.:如果对象不为null,则调用其方法或属性
String? name;
String greeting = name ?? 'Hello, Guest'; // 如果 name 为 null,则使用默认值
print(greeting); // 输出 Hello, Guestint? value;
value ??= 42; // 如果 value 为 null,则赋值为 42
print(value); // 输出 42
测试类型运算符
Dart 提供了两个用于检查对象类型的运算符:is 和 is!。
is:检查对象是否是某个类型,返回true或falseis!:检查对象是否不是某个类型
var x = 123;if (x is int) {print('x is an integer');
}if (x is! String) {print('x is not a string');
}
赋值运算符
赋值运算符用于将值赋给变量,最常用的赋值运算符是 =,此外还有一些组合运算符。
=:简单赋值+=:加法赋值-=:减法赋值*=:乘法赋值/=:除法赋值%=:取模赋值
int a = 10;a += 5; // a = a + 5,结果为 15
a -= 3; // a = a - 3,结果为 12
a *= 2; // a = a * 2,结果为 24
a ~/= 4; // a = a ~/ 4,结果为 6
累加器和自增自减运算符
Dart 提供了简洁的方式来增加或减少变量的值。
++:自增运算符,将变量的值增加 1--:自减运算符,将变量的值减少 1
这些运算符既可以作为前缀也可以作为后缀。
int count = 0;count++; // 先使用后递增,count = 1
++count; // 先递增后使用,count = 2count--; // 先使用后递减,count = 1
--count; // 先递减后使用,count = 0
运算符优先级
在 Dart 中,运算符有优先级。运算符优先级决定了它们在表达式中的计算顺序。例如,乘法和除法的优先级高于加法和减法。
int result = 2 + 3 * 4; // 输出 14,因为乘法优先级高于加法
可以通过使用括号来改变运算优先级:
int result = (2 + 3) * 4; // 输出 20
总结
Dart 提供了丰富的运算符,可以高效地处理数值、布尔、位运算等操作。本文详细介绍了算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符和类型测试运算符等内容。通过掌握这些运算符,你可以更加自如地处理复杂的运算逻辑,提升代码的可读性和效率。
相关文章:
【Flutter】Dart:运算符
在 Dart 中,运算符是非常重要的组成部分,它们可以对变量和常量进行多种运算操作。理解和掌握 Dart 中的各种运算符不仅可以帮助你编写更加高效、简洁的代码,还能更好地理解其背后的逻辑和设计。本文将深入探讨 Dart 中的运算符,包…...
ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布的时候,我写了篇文章介绍 逻辑推理能力堪比博士生,OpenAI发布全新AI模型系列: o1 - 大模型或许进入新阶段,还翻译了官方的介绍 解密OpenAI o1是如何让LLMs获得逻辑推理能力的 - CoT * RL,也…...
《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络
任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机,安装时记得开启CPU虚拟化,命名为“KVMC6”。 2. (网卡配置和之前的一样,都用100网段)网关设置为192.168.100.1,地址段为192.168.100.10-25…...
【Unity新闻】Unity 6 正式版发布
Unity CEO Matt Bromberg 在今天自豪地宣布,Unity 6 正式发布!作为迄今为止最强大和稳定的版本,Unity 6 为游戏和应用开发者提供了大量的新功能和工具,帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1(LTS&a…...
基于语音识别的停车共享小程序(lw+演示+源码+运行)
目 录 1 绪论1 1.1 课题研究背景1 1.2 研究现状1 1.3 论文结构安排1 2 系统关键技术2 2.1 微信小程序2 2.2 微信Web开发者工具2 2.3 JavaScript简介2 2.4 微信小程序API接口2 2.5 MYSQL数据库2 3 系统分析1 3.1 可行性分析1 3.1.1 技术可行性1 3.1.2 经济可行性1…...
编程考古-计算机发展(上)
计算机/器现在是我们日常生活中的重要工具,它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之,从一个初始的符号串(输入)出发,依据既定的法则逐步改变这个…...
pc轨迹回放制作
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:pc轨迹回放制作 主要内容:制作车辆轨迹操作页,包括查询条件、动态轨迹回放、车辆轨迹详情表单等 应用场景:车辆…...
无向图中的一些问题与处理(上接无向图知识简记)
一、有向图中的排序与调度 1、深度优先搜索的排序 使用深度优先搜索对图中顶点进行排序,根据数据结构性质与递归保存顺序,有以下三种排列顺序 (1) 前序:在递归调用之前将顶点加入队列。 (2)后…...
AIGC助力小学生编程梦:C++入门不再难!
文章目录 一、AIGC时代下的编程教育新趋势二、小学生C入门趣味编程的意义三、小学生C入门趣味编程的实践策略四、面临的挑战与应对策略五、AIGC技术在小学生C编程中的应用与前景《小学生C趣味编程从入门到精通》编辑推荐内容简介作者简介目录 随着人工智能生成内容(…...
AI开发-三方库-Hugging Face-Pipelines
1 需求 需求1:pipeline支持的任务类型 需求2:推理加速使用CPU还是GPU 需求3:基于pipeline的文本分类示例 需求4:pipeline实现原理 模型使用步骤(Raw text -》Input IDs -》Logits -》Predictions)&…...
【Python网络编程】学习Socket编程,打造网络应用!
【Python网络编程】学习Socket编程,打造网络应用! 网络编程是现代计算机科学中的重要一环,几乎所有的应用都依赖网络传输数据。无论是创建简单的客户端-服务器模型,还是构建复杂的网络应用,Socket 编程都是关键的技术…...
docker (desktopcompose) download
docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell...
即时通讯:单聊消息逻辑
在线消息(对方在线) 1.client发送消息到msg_server 2.msg_server判断消息有效性,每秒发送的消息不能超过限制,无误后转发给db_server 3.db_server判断为单聊 查找对应的会话,不存在则创建两个会话(双方…...
Libevent源码剖析之reactor
1 简介 reactor 是一种事件驱动的并发处理模式,常用于网络服务器和事件循环系统中。它主要的功能是通过单线程或者多线程处理I/O操作,避免阻塞,并且能够高效处理大量并发的事件。 one loop per thread or process,以下摘自 reacto…...
分享一套SpringBoot+Vue民宿(预约)系统
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue民宿(预约)系统,分享下嘿嘿。 项目介绍 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,…...
Linux——应用软件的生命周期
功能开发测试: 功能性测试 对应开发框架的测试用例代码的漏洞扫描 Web服务器版本应用开发语言的依赖关系和版本信息是否会造成类似内存泄露等影响系统性能的问题压力测试应用的部署 获取应用代码以及应用静态文件的代码包将安装包中的文件按照服务器配置的架构&…...
【Linux】exec系列函数详细介绍
首先,exec 是 execute (意为:执行) 的缩写。 exec系列函数 各个“后缀”的意思: l 为 list 可变参数列表、v 为 vector、p 为 PATH、e 为环境变量数组 envp execl:l 为 list 可变参数列表 原型:int execl(const char *path, cons…...
ARINC 429总线协议
一、概述 ARINC 是美国航空无线电公司英文字头的缩写, 该公司1977年7月21日出版了“ARINC 429规范”一书,429规范就是飞机电子系统之间数字式数据传输的标准格式,在飞机上使用429总线的电子设备均应遵守这个规范,这样才能保证电子…...
Qt解决槽函数中发送的信号的参数会变化带来的错误
connect(item, &MusicItemWidget::playRequest, this, [this] { emit playMusic(QUrl(this->m_mediaPath); ); 如上图,this->m_mediaPath是个成员变量,但自己的初衷是发送一个最开始捕获的值,那么可以使用下面的方法…...
C C++ 如何编写库级接口
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
P0400YE FBM04输入输出模块
P0400YE FBM04输入输出模块是一款面向工业自动化系统的通用I/O单元,主要用于实现现场设备与控制系统之间的信号交互,具备高可靠性和良好扩展性,广泛应用于生产线、过程控制及分布式控制系统中。支持多通道数字输入输出,提高系统控…...
紧急预警:.NET 9 RC2已移除旧版LowCodeProvider——所有基于.NET 8低代码框架的项目须在2024年11月30日前完成迁移,否则将触发运行时降级熔断
第一章:.NET 9 低代码开发范式演进与熔断机制全景概览.NET 9 将低代码能力深度融入平台原生架构,不再依赖第三方可视化设计器,而是通过源生成器(Source Generators)、属性驱动的组件注册、以及声明式 UI 模型ÿ…...
PHP 8.9原生异步I/O终极调优清单(含12项基准测试指标、9类典型负载适配矩阵)
第一章:PHP 8.9原生异步I/O的核心演进与设计哲学PHP 8.9并未实际发布——截至2024年,PHP官方最新稳定版本为PHP 8.3,且PHP核心开发团队已明确表示**不会在PHP 8.x系列中引入原生异步I/O运行时**。该标题所指的“PHP 8.9”属于虚构版本&#x…...
视觉问答(VQA)前沿进展:5大创新数据集与顶会论文精要解析
1. 视觉问答(VQA)技术现状与挑战 视觉问答(VQA)作为计算机视觉与自然语言处理的交叉领域,近年来发展迅猛。简单来说,VQA就是让计算机看懂图片内容后,回答人类提出的自然语言问题。比如给出一张…...
2.76亿|国网浙江电力 2026 年第一次物资框架采购成交候选人名单出炉
4月3日,国网浙江电力2026年第一次物资类框架协议竞争性谈判采购推荐的成交候选人名单公示(采购编号:ZBGW26-003),涵盖线路防雷、通信配件、量子加密模组、带电作业机器人附件等 23 类细分品类。中标总金额27552.5万元&…...
Redis持久化:从AOF到RDB,如何实现数据不丢失?聊
Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...
ProgrammingFonts网站功能详解:快速搜索、对比和评分系统
ProgrammingFonts网站功能详解:快速搜索、对比和评分系统 【免费下载链接】ProgrammingFonts This is a collection of programming fonts, just share this with the programmers. Now there are 108 kinds of fantastic fonts! 项目地址: https://gitcode.com/g…...
南方创业板人工智能ETF(159382.SZ)单日大涨10.45%,中际旭创等AI龙头集体爆发
4月8日,A股人工智能板块迎来强势爆发,南方创业板人工智能ETF(159382.SZ)盘中大幅拉升,最终收涨10.45%,报2.484元。据红色火箭数据显示,该ETF最新规模21.94亿元,量比1.62,…...
技术判断力之AI三问涌
认识Pass层级结构 Pass范围从上到下一共分为5个层级: 模块层级:单个.ll或.bc文件 调用图层级:函数调用的关系。 函数层级:单个函数。 基本块层级:单个代码块。例如C语言中{}括起来的最小代码。 指令层级:单…...
代码之外周刊(第期):当技术让一切趋同,我们还剩什么?渭
1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...
