面试题:如何在不使用临时变量temp的情况下交换两个整数的值?
利用一个小技巧,一个整数a在异或另一个整数b两次以后所得的值还是整数a。
具体的过程我们可以自己找两个整数以二进制的形式自己在纸上画一下他们的异或过程。(异或的运算符号为"^")
比如:
下面给出交换两个整数位置的代码,不需要临时变量temp。
1 2 3 4 5 6 7 8 9 10 11 | public class Aa { public static void main(String[] args) { int a = 3 , b = 5 ; System.out.println( "before swap:" + "a=" + a + ",b=" + b); // 开始交换位置 a = a ^ b; b = a ^ b; // b=a^b^b=a a = a ^ b; // a=a^b^a^b^b=b System.out.println( "after swap:" + "a=" + a + ",b=" + b); } } |
运行结果:
before swap:a=3,b=5
after swap:a=5,b=3
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步