不使用第三方变量的情况下交换两个数值

简介: 不使用第三方变量的情况下交换两个数值

不使用第三方变量的情况下交换两个数值

三种思路

1. 通过加减运算变换两个整数的值,利用两数之和减去另一个数的方式(此方法有局限性,如果两个数的数值过大,会超出范围造成数据丢失精度,数据发生变化)
public class Test {
  // 算术运算
    public static void main(String[] args) {
        int a = 6, b = 10;
        // a = 10
        a = b - a;
        // b = 20
        b = b - a;
        // a = 30
        a = a + b;
        System.out.println("算术运算:a=" + a + "   b=" + b);
    }
}

运行结果

算术运算:a=10 b=6

2. 通过位运算符异或(^)操作,利用任何数与0进行异或操作后的结果都为该数本身的特性
public class Test {
    // 异或运算(转为2进制计算,值相同为0,不同为1)
    public static void main(String[] args) {
        int a = 6; // a:0000 0110
        int b = 10; //b:0000 1010
        // a:0000 1100  12
        a = a ^ b;
        // b:0000 0110  6
        b = a ^ b;
        // a:0000 1010  10
        a = a ^ b;
        System.out.println("异或运算:a=" + a + "   b=" + b);
    }
}

运行结果

异或运算:a=10 b=6

3. 用变量本身交换数值
public class Test {
    // 用变量本身交换数值
    public static void main(String[] args) {
        int a = 6,b = 10;
        // 直接把b赋值给a 再用总和减a拿到b
        // b = (a+b) - (a=b);
        // a赋值给b加0  b赋值给a
        b = a + (a = b) * 0;
        System.out.println("变量本身交换数值:a=" + a + "   b=" + b);
    }
}

运行结果

变量本身交换数值:a=10 b=6

目录
相关文章
|
Java 测试技术
SpringBoot整合Zookeeper做分布式锁
SpringBoot整合Zookeeper做分布式锁
328 0
|
机器学习/深度学习 人工智能 自动驾驶
构建未来:AI技术在智能交通系统中的应用
【5月更文挑战第20天】 随着人工智能技术的飞速进步,其在现代交通系统中的应用日益广泛,从智能导航到自动车辆调度,AI正逐步改变我们的出行方式和交通管理。本文深入探讨了AI技术在智能交通系统中的多种应用,分析了其提升交通效率、增强安全性及减少环境影响的潜在能力。同时,讨论了实施这些技术所面临的挑战和未来的发展方向,为读者提供了一个关于AI如何塑造未来交通网络的全面视角。
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 数据库访问 2
本教程讲解如何在Servlet中实现数据库访问。首先确保了解JDBC并配置MySQL驱动(如mysql-connector-java-5.1.39-bin.jar),在Eclipse Web项目中需将驱动放入Tomcat的lib目录。创建名为`websites`的数据库表,插入测试数据。之后展示了一个Servlet示例,该示例连接到数据库,执行SQL查询以获取`websites`表中的`id`、`name`和`url`,并将结果输出到HTML响应中。要运行Servlet,需在web.xml中配置并访问指定URL。
221 4
|
Linux iOS开发 MacOS
实现虚拟人直播有那些开源软件
实现虚拟人直播有那些开源软件
478 1
|
存储 缓存 算法
Linux系统中内核态、用户态和零拷贝技术解析
Linux系统中内核态、用户态和零拷贝技术解析
755 0
|
Prometheus 监控 Kubernetes
一文搞懂基于 Prometheus Stack 监控 Java 容器
Hello folks,我是 Luga,今天我们来分享一下如何基于 Prometheus Stack 可视化监控运行在 Kubernetes Cluster 上的 Spring Boot 微服务容器实例。这里,主要针对每一个 Java 容器实例的指标进行监控,具体涉及:CPU、内存、线程信息、日志信息、HTTP 请求以及 JVM 等。
675 0
|
监控 Java 数据安全/隐私保护
JVM频繁GC内存溢出排查
GC(Garbage collection)频繁和堆内存溢出原因简单来说是对象占用堆空间难以回收,新对象无法分配触发GC或者直接导致内存溢出,最终进程结束。
700 0
|
存储 监控 Java
详解ElasticAPM实现微服务的链路追踪(一)
Elastic APM实现链路追踪,首先要引用开源的APMAgent(APM代理),然后将监控的信息发送到APMServer,然后在转存入ElasticSearch,最后有Kibana展示;具体流程如下图所示:
详解ElasticAPM实现微服务的链路追踪(一)
|
Java 数据库 数据安全/隐私保护
微信聊天记录导出为电脑txt文件教程
网上有一些工具也可以完成这个功能,但是基本都是付费的。手动操作的话,找了很多的博客,基本没有完全有效的。最终找到一篇很靠谱的教程:传送门,本文基本参考这篇进行整理。
1133 0
微信聊天记录导出为电脑txt文件教程
|
前端开发 JavaScript
Umi 4 特性 03:默认最快的请求
Umi 4 特性 03:默认最快的请求
736 0