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

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

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

三种思路

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

目录
相关文章
|
6天前
|
存储
两个变量数值的交换
两个变量数值的交换
|
1月前
交换两个变量的值
交换两个变量的值
|
3月前
|
算法 搜索推荐 数据处理
值交换解析法(无第三方变量法)
值交换解析法(无第三方变量法)
35 0
|
3月前
对调 2个变量的值若干种方式
对调 2个变量的值若干种方式
26 0
|
存储
变量的储存方式
变量的储存方式
216 0
|
算法
【经典算法问题 二】交换两个变量值,不使用第三个变量
【经典算法问题 二】交换两个变量值,不使用第三个变量
55 0
如何在把创建临时变量的前提下交换两个数(直接上代码)
如何在把创建临时变量的前提下交换两个数(直接上代码)
|
算法 Java
[算法] swap函数交换两个数值未改变问题解决
[算法] swap函数交换两个数值未改变问题解决
C/C++语言交换两个变量的七种方法
C/C++语言交换两个变量的七种方法
449 0
C/C++语言交换两个变量的七种方法
|
开发者 Python
交换两个变量的值 | 学习笔记
快速学习交换两个变量的值,介绍了交换两个变量的值系统机制, 以及在实际应用过程中如何使用。
102 0
交换两个变量的值 | 学习笔记