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
目录
相关文章
|
1天前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
5 1
|
1天前
|
Java 索引
Java中indexOf() 方法详解
Java中indexOf() 方法详解
|
1天前
|
算法 安全 Java
Java代码优化方法和具体展示
Java代码优化方法和具体展示
|
1天前
|
算法 Java
Java将16进制的字符串转换为10进制数的方法
【6月更文挑战第27天】Java将16进制的字符串转换为10进制数的方法
8 0
|
1天前
|
Java
Java多线程notifyAll()方法
Java多线程notifyAll()方法
|
2天前
|
安全 Java Apache
十个方法破解Java生成随机密码的小窍门
十个方法破解Java生成随机密码的小窍门
|
2天前
|
算法 Java
Java中Collections.shuffle方法总结
Java中Collections.shuffle方法总结
|
3天前
|
缓存 监控 Java
Java中的内存泄漏及其排查方法
Java中的内存泄漏及其排查方法
|
3天前
|
Java
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
5 0
|
3天前
|
Java 机器人 程序员
Java中的线程通信:wait、notify与Condition详解
Java中的线程通信:wait、notify与Condition详解