当前位置: 首页 > news >正文

【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

关系运算符

关系运算符用于比较两个值,并返回布尔值 truefalse。常见的关系运算符有:

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于或等于
  • <=:小于或等于
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

如果 conditiontrue,则返回 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 提供了两个用于检查对象类型的运算符:isis!

  • is:检查对象是否是某个类型,返回 truefalse
  • is!:检查对象是否不是某个类型
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 中&#xff0c;运算符是非常重要的组成部分&#xff0c;它们可以对变量和常量进行多种运算操作。理解和掌握 Dart 中的各种运算符不仅可以帮助你编写更加高效、简洁的代码&#xff0c;还能更好地理解其背后的逻辑和设计。本文将深入探讨 Dart 中的运算符&#xff0c;包…...

ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?

一个月前&#xff0c;o1发布的时候&#xff0c;我写了篇文章介绍 逻辑推理能力堪比博士生&#xff0c;OpenAI发布全新AI模型系列&#xff1a; o1 - 大模型或许进入新阶段&#xff0c;还翻译了官方的介绍 解密OpenAI o1是如何让LLMs获得逻辑推理能力的 - CoT * RL&#xff0c;也…...

《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络

任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机&#xff0c;安装时记得开启CPU虚拟化&#xff0c;命名为“KVMC6”。 2. &#xff08;网卡配置和之前的一样&#xff0c;都用100网段&#xff09;网关设置为192.168.100.1&#xff0c;地址段为192.168.100.10-25…...

【Unity新闻】Unity 6 正式版发布

Unity CEO Matt Bromberg 在今天自豪地宣布&#xff0c;Unity 6 正式发布&#xff01;作为迄今为止最强大和稳定的版本&#xff0c;Unity 6 为游戏和应用开发者提供了大量的新功能和工具&#xff0c;帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1&#xff08;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…...

编程考古-计算机发展(上)

计算机/器现在是我们日常生活中的重要工具&#xff0c;它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之&#xff0c;从一个初始的符号串&#xff08;输入&#xff09;出发&#xff0c;依据既定的法则逐步改变这个…...

pc轨迹回放制作

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;pc轨迹回放制作 主要内容&#xff1a;制作车辆轨迹操作页&#xff0c;包括查询条件、动态轨迹回放、车辆轨迹详情表单等 应用场景&#xff1a;车辆…...

无向图中的一些问题与处理(上接无向图知识简记)

一、有向图中的排序与调度 1、深度优先搜索的排序 使用深度优先搜索对图中顶点进行排序&#xff0c;根据数据结构性质与递归保存顺序&#xff0c;有以下三种排列顺序 &#xff08;1&#xff09; 前序&#xff1a;在递归调用之前将顶点加入队列。 &#xff08;2&#xff09;后…...

AIGC助力小学生编程梦:C++入门不再难!

文章目录 一、AIGC时代下的编程教育新趋势二、小学生C入门趣味编程的意义三、小学生C入门趣味编程的实践策略四、面临的挑战与应对策略五、AIGC技术在小学生C编程中的应用与前景《小学生C趣味编程从入门到精通》编辑推荐内容简介作者简介目录 随着人工智能生成内容&#xff08;…...

AI开发-三方库-Hugging Face-Pipelines

1 需求 需求1&#xff1a;pipeline支持的任务类型 需求2&#xff1a;推理加速使用CPU还是GPU 需求3&#xff1a;基于pipeline的文本分类示例 需求4&#xff1a;pipeline实现原理 模型使用步骤&#xff08;Raw text -》Input IDs -》Logits -》Predictions&#xff09;&…...

【Python网络编程】学习Socket编程,打造网络应用!

【Python网络编程】学习Socket编程&#xff0c;打造网络应用&#xff01; 网络编程是现代计算机科学中的重要一环&#xff0c;几乎所有的应用都依赖网络传输数据。无论是创建简单的客户端-服务器模型&#xff0c;还是构建复杂的网络应用&#xff0c;Socket 编程都是关键的技术…...

docker (desktopcompose) download

docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell...

即时通讯:单聊消息逻辑

在线消息&#xff08;对方在线&#xff09; 1.client发送消息到msg_server 2.msg_server判断消息有效性&#xff0c;每秒发送的消息不能超过限制&#xff0c;无误后转发给db_server 3.db_server判断为单聊 查找对应的会话&#xff0c;不存在则创建两个会话&#xff08;双方…...

Libevent源码剖析之reactor

1 简介 reactor 是一种事件驱动的并发处理模式&#xff0c;常用于网络服务器和事件循环系统中。它主要的功能是通过单线程或者多线程处理I/O操作&#xff0c;避免阻塞&#xff0c;并且能够高效处理大量并发的事件。 one loop per thread or process&#xff0c;以下摘自 reacto…...

分享一套SpringBoot+Vue民宿(预约)系统

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue民宿(预约)系统&#xff0c;分享下嘿嘿。 项目介绍 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c…...

Linux——应用软件的生命周期

功能开发测试&#xff1a; 功能性测试 对应开发框架的测试用例代码的漏洞扫描 Web服务器版本应用开发语言的依赖关系和版本信息是否会造成类似内存泄露等影响系统性能的问题压力测试应用的部署 获取应用代码以及应用静态文件的代码包将安装包中的文件按照服务器配置的架构&…...

【Linux】exec系列函数详细介绍

首先&#xff0c;exec 是 execute (意为:执行) 的缩写。 exec系列函数 各个“后缀”的意思&#xff1a; l 为 list 可变参数列表、v 为 vector、p 为 PATH、e 为环境变量数组 envp execl&#xff1a;l 为 list 可变参数列表 原型&#xff1a;int execl(const char *path, cons…...

ARINC 429总线协议

一、概述 ARINC 是美国航空无线电公司英文字头的缩写&#xff0c; 该公司1977年7月21日出版了“ARINC 429规范”一书&#xff0c;429规范就是飞机电子系统之间数字式数据传输的标准格式&#xff0c;在飞机上使用429总线的电子设备均应遵守这个规范&#xff0c;这样才能保证电子…...

Qt解决槽函数中发送的信号的参数会变化带来的错误

connect(item, &MusicItemWidget::playRequest, this, [this] { emit playMusic(QUrl(this->m_mediaPath)&#xff1b; ); 如上图&#xff0c;this->m_mediaPath是个成员变量&#xff0c;但自己的初衷是发送一个最开始捕获的值&#xff0c;那么可以使用下面的方法…...

C C++ 如何编写库级接口

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...