Java基础----不使用第三个变量,实现两个变量的值的互换

直入主题:

首先说一下思路:

思路一:现在已知的是两个变量的值(假设两个变量是a,b),以及两个值相加的和,

这样就可以想到,我们可以先让两个变量进行求和并且将结果放在其中一个变量内,

这时候肯定有疑问:这不就把其中一个变量的值给覆盖了吗?

其实进行完求和的这一步后,我们已知的是:

a中存放的是两个变量的和(假设将两个变量的和赋值给a),b中存放的是它原本的值,

这个时候就可以用得到的和减去b原本的值得到a原本的值放置到b中,

接下来再用a中存放的和减去现在b中的值得到a原本的值赋值给a,这样就可以完成

两个值得互换。

具体代码:

扫描二维码关注公众号,回复: 2477396 查看本文章

class Test{
    public static void main (String []args){
        int a,b;
        a=3;
        b=4;
        a=a+b;
        b=a-b;
        a=a-b;
            }

}

存在的问题

这种方式最好不要用,因为如果两个整数的数值过大,会超出int范围,

会强制转换,数据会变化。


思路二:了解过异或的同学应该会清楚异或所具有的一个特性,

那就是一个数异或另一个数两次,还是等于它本身。可以根据

异或的这一个特点完成两个变量值的交换。

具体代码:

class Test{
    public static void main (String []args){
        int a,b;
        a=3;
        b=4;
        a=a^b;//含义:a的值改变为a^b
        b=a^b;//含义:b=a^b^b=a
        a=a^b;//含义:a=a^a^b=b
        }

}


总结:第一种方法不要使用,第二种方法多在笔试题中使用,在实际开发中应该申明第三个变量

用来作为中间变量帮助进行两个变量值得互换。



猜你喜欢

转载自blog.csdn.net/sanmu_1/article/details/81021221