java 交换代码的方法

在Java里,直接交换两个数的值,最原始的方法是借助临时变量temp。比如这样:给temp赋值a的值,再把b的值赋给a,最后把temp的值赋给b。这就是用临时变量temp作为中间人的方法。但这样一来,变量一多,代码就显得臃肿。要是在面试的时候写这三行代码,面试官可能会直接皱眉。所以,有没有更优雅的办法呢?答案其实在数学里。比如可以用加法来实现交换。具体做法是把a和b的和给a,然后用a减去b得到原来的a给b,最后再用a减去b得到原来的b。这样只需要三行代码,整个过程只用到一个临时变量。还有一种方法是利用异或运算。把a异或上b给a,接着把这个结果异或上b给b,最后再把结果异或上原来的a给a。异或运算有两个特性:任何数异或自身等于0,任何数异或0等于它本身。利用这两个特性就能把值交换,不需要额外变量,空间复杂度降到O(1)。 总结起来,加法思路是通过和来搭桥交换值,适合整数,一行搞定;异或思路是用异或本身来搭桥交换值,整数、浮点和字符串都能使用,需要三行逻辑。核心都是先保存原来的值再恢复过去。下次写交换代码时别急着用temp变量,试着用这两个方法试试看吧!