经典面试题:不用第三方变量,交换两个数据

不用第三方变量,交换两个数据

方法一:

 //不用第三方变量,交换两个数据
    int a = 10;
    int b = 20;

    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

    System.out.println("a = " + a);
    System.out.println("b = " + b);

原理说明:

  • 一个数据,被另一个数据,异或(^)两次,该数据不发生改变。如下,
    • 10 ^ 20 ^20 = 10
    • 20 ^ 10 ^ 20 = 10

具体分析:

	int a = 10;
    int b = 20;

    a = a ^ b;  //即 a = 10 ^ 20 ;
    b = a ^ b;  //即 b = 10 ^ 20 ^ 20 = 10 ;
    a = a ^ b;  //即 a = 10 ^ 20 ^ 10 = 20;
    //至此交换完成,a=20;b=10;

方法二:

 //不用第三方变量交换两个数据
    int a = 10;
    int b = 20;

    a = a + b;
    b = a - b;
    a = a - b;

    System.out.println("a = " + a);
    System.out.println("b = " + b);

原理说明:简单的数学运算逻辑

具体分析:

 	int a = 10;
    int b = 20;

    a = a + b;  // a = 10 + 20 = 30;
    b = a - b;  // b = 30 - 20 = 10;
    a = a - b;  // a = 30 - 10 = 20;
    //至此,两个数据交换已完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值