两个变量进行值交换的三种方式

2023-11-03

在很多应用场景中我们需要将两个变量的值进行交换,在这里总结了3种方式以及它们的利弊.

第一种,可以定义一个额外的变量用于进行数值交换,这是种最普通但实用性又很强的方法

int a = 1;
int b = 2;
​
int c = a; //c = 1;
a = b;     //a=2;
b = c;     //b = 1;

第二种利用加减法的操作,这种方法可以无需在定义一个新变量就能实现数值交换,但有一个致命的缺陷,a+b这种操作可能会导致数据的溢出,导致最后交换出来的数值完全不对.

int a  =  1;
int b  =  2;
​
a  =  a + b;// a =1+2=3
b  =  a - b; // b=3-2=1
a  =  a - b;// a = 3-1=2

第三种利用位运算符实现,这是利用位运算的方法,不仅不要开辟新变量,而且效率更高.

int a  =  1;
int b  =  2;
​
a = a ^ b;
b = a ^ b;
a = a ^ b;

总结起来,后两种方法都只能应用于数值类型的,如果是引用类型的就无法使用了,但第一种方法却能够依旧使用,所以平平无奇的方法反而更有效.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个变量进行值交换的三种方式 的相关文章

  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序

随机推荐

  • ctf.show web2

    单引号无回显也无报错 or 1 1 有回显 order by测试也没特殊回显好像必须要带入sql函数才能回显 直接进行union select 1 查看当前数据库名称 1 or 1 1 union select 1 database 3 l
  • 并发编程系列之Exchanger

    前言 上面我们介绍了信号量 再来说说交换者 这个东西用的不是很多 所以一般也不被经常关注 但是我们还是最好了解下 下面我将从什么是Exchanger以及如何使用Exchanger两个方面谈谈这个用于线程间协调的工具类 什么是Exchange
  • uni-app—从安装到卸载

    uni app 从安装到卸载 简介 uni app官网 uni app 是一个使用 Vue js 开发所有前端应用的框架 开发者编写一套代码 可发布到iOS Android Web 响应式 以及各种小程序 微信 支付宝 百度 头条 QQ 钉
  • spring中的RESTFUL风格是什么?

    什么是RestFul风格 RestFul是一种软件架构风格 设计风格 而不是标准 只是提供了一组设计原则和约束条件 它主要用于客户端和服务器交互类的一种代码编写风格 基于这个风格设计的软件可以更简洁 更有层次 更易于实现缓存等机制 来源 R
  • C++面试集锦

    C 面试集锦 2018年04月24日 18 28 37 草根caogen 阅读数 785 转自 http blog csdn net allen fan 01 article details 9713555 1 new delete mal
  • redis bitmap实现签到

    redis Bitmap 位图本质是数组 它基于string数据类型的按位操作 该数组由多个二进制位组成 每个二进制位都对应一个偏移量 可以成为一个索引或者位格 Bitmap支持的最大位数是232位 它可以极大的节省存储空间 使用512M内
  • 3种常见的渗透测试漏洞总结,快来收藏√

    越权漏洞 越权访问 Broken Access Control 简称BAC 是Web应用程序中一种常见的漏洞 由于其存在范围广 危害大 被OWASP列为Web应用十大安全隐患的第二名 所谓越权 顾名思义即超过当前用户的权力范围 越至不同用户
  • JS"类"中方法的互相调用

    JS 类 中的方法相互调用要加 this 不然无法成功
  • 微服务之nacos、feign、gateway

    文章目录 nacos 简介 配置 父pom pom yaml main RefreshScope 持久化 使用 附 feign 配置 pom main service 超时 使用 两个微服务使用的对象可以不一致 远程调用未携带Cookie等
  • 挖洞小思路

    1 Google语法 不管是在挖掘公益漏洞还是SRC漏洞 都需要使用到Google语法 而本次就对Google语法进行一些总结 1 1 基础语法 当然在挖掘漏洞过程中 可能使用到的语法也就是几个常用的 字符 注释 intext 寻找正文中含
  • AngularJS项目

    1 AngularJS介绍 AngularJS是一个为动态WEB应用设计的结构框架 它能让你使用HTML作为模板语言 通过扩展HTML的语法 让你能更清楚 简洁地构建你的应用组件 它的创新点在于 利用 数据绑定 和 依赖注入 它使你不用再写
  • 什么是埋点?

    埋点大概分成2种 业务埋点 这里埋点的含义就是 预先在用户可能操作的 点 埋下上报的代码 一旦用户发生了操作 我就上报该用户操作的详细信息 一般是要产品或者运营提出需求 在哪里埋点 比如 1 进入某个界面 客户端上报 xx用户进入了xx页面
  • ROS——不同版本间ROS进行通信

    在相同版本间的ROS进行通信不在赘述了 修改 etc hosts文件即可 最近项目遇到在Ubuntu16 04 与Ubuntu18 04两个系统间进行ROS通信 ROS版本分别为Kinetic和Melodic 配置网络后 两边都能够ping
  • 【项目实战】基于Python实现xgboost回归模型(XGBRegressor)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 代码讲解 如需数据 代码 文档 代码讲解可以直接到文章最后获取 1 项目背景 随着大数据时代的到来 具备大数据思想至关重要 人工智能技术在各行各业的应用已是随处可见 在生产制造业 人工智
  • 自学python转行-强烈建议

    原标题 强烈建议 转行Python最好看一下这篇文章 一 转行要趁早 上面类似的问题群里还有很多 我请了一些不同岗位的嘉宾来给大家分享经验 下面谈谈我的感悟 1 转行如爬树 转行真的要趁早 年轻的时候 试错的代价很小 即使你走错了路还能转回
  • Typora 远程代码执行漏洞

    声明 本文仅用于技术交流 请勿用于非法用途 由于传播 利用此文所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 文章作者不为此承担任何责任 一 产品介绍 Typora 是一款由 Abner Lee 开发的轻量级 Mark
  • 软件测试管理

    软件测试 在规定的条件下对程序进行操作 以发现程序的错误 衡量软件质量 并对其是否能满足用户需求进行评估的过程 点工 项目研发 1 立项 立项依据 商业论证 可行性分析报告 编写角色 市场人员 项目经理 产品经理 内容 分析项目的成本和收益
  • 2020-2021前端面试题合集,结果蒙了

    正文 介绍下半连接队列 服务器第一次接收到客户端的SYN后 会处于SYN REVD阶段 此时双方还没有建立完全的连接 服务器会把此种状态下请求连接放在一个队列里 我们把这种队列称为半连接队列 已经完成三次握手并建立连接 就叫全连接队列 ht
  • 对顺序表中元素从小到大排序的算法

    编写一个对顺序表中元素从小到大排序的算法 函数接口如下 初始条件 线性表L已经存在 且元素个数大于1 操作结果 将L中的元素从小到大排序 Status ListSort Sq SqList L 然后 在main函数中调用ListSort S
  • 两个变量进行值交换的三种方式

    在很多应用场景中我们需要将两个变量的值进行交换 在这里总结了3种方式以及它们的利弊 第一种 可以定义一个额外的变量用于进行数值交换 这是种最普通但实用性又很强的方法 int a 1 int b 2 int c a c 1 a b a 2 b