不使用第三个变量完成两个整数的交换

本文介绍两种不使用临时变量进行变量交换的方法:加减法和异或运算,并提供了Java和JavaScript的示例代码。此外,还展示了JavaScript如何利用其动态类型特性进行对象类型的变量交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Person {   

 

  public static void main(String[] args) {   

   //利用加减法   

   int a = 10, b = 5;   

      a = a + b;   

        b = a - b;   

        a = a - b;     

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

    }   

}  

 

还有另外一种方法,且效率更快:

 

public class Person {   

    public static void main(String[] args) {   

   //利用一个数异或本身等于0和异或运算符合交换率   

     int a = 10, b = 5;   

     a = a ^ b;   

   b = a ^ b;   

        a = a ^ b;              

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

    }   

}  

 

当然以上两种的算法对应js中也支持,如下:

 

Js代码   

var a = 11,b = 22;   

a = a + b;   

b = a - b;   

a = a - b;   

  

console.log(a+'/n'+b)  

 或

Js代码   

var a = 11,b = 22;   

a = a ^ b;   

b = a ^ b;   

a = a ^ b;   

  

console.log(a+'/n'+b)   

但如果两个变量是对象类型,java(强类型)貌似无能为力了。js却可以,实现方式还不少,如下:

 

Js代码   
  1. var a = {name:'jack'},b = {name:'tom'};   
  2. a = [a,b];   
  3. b = a[0];   
  4. a = a[1];   
  5.   
  6. console.log(a.name+'/n'+b.name)  

 

或者

 

Js代码   
  1. var a = {name:'jack'},b = {name:'tom'};   
  2. a = {a:a,b:b};   
  3. b = a.a;   
  4. a = a.b;   
  5.   
  6. console.log(a.name+'/n'+b.name)  

 

正是利用js动态类型(弱类型)系统及对象/数组直接量特性。其它强类型则不可以,编译器会提示类型转换错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值