java交换两个数字三种方法

简介: java交换两个数字三种方法

一、使用临时变量

    static void swap1(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        int tem = a;
        a = b;
        b = tem;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }

二、使用异或运算

    // a转二进制:10,b转二进制11
    // a=a^b=10^11=01
    // b=a^b=01^11=10
    // a=a^b=01^10=11
    static void swap2(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }

三、使用加法

  static void swap3(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }
 

四、测试

  public static void main(String[] args) {
        swap1(2, 3);
        System.out.println("--------");
        swap2(2, 3);
        System.out.println("--------");
        swap3(2, 3);
    }
 
    static void swap1(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        int tem = a;
        a = b;
        b = tem;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }
 
    // a转二进制:10,b转二进制11
    // a=a^b=10^11=01
    // b=a^b=01^11=10
    // a=a^b=01^10=11
    static void swap2(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }
 
    static void swap3(int a, int b) {
        System.out.printf("交换前:a = %s,b = %s \n", a, b);// 交换前:a = 2,b = 3
        // 使用异或的方式进行两数交换
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.printf("交换后:a = %s,b = %s\n", a, b);// 交换后:a = 3,b = 2
    }
交换前:a = 2,b = 3 
交换后:a = 3,b = 2
--------
交换前:a = 2,b = 3 
交换后:a = 3,b = 2
--------
交换前:a = 2,b = 3 
交换后:a = 3,b = 2
相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
47 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
66 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
28 1
|
3月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
62 17
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
140 4
|
2月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
336 2
|
2月前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
48 1
|
3月前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
28 2