java按值传递(2)两整数交换

java下面的函数是不能成功交换两个整数的

 public void swap1(int a,int b){ 
 //java值参数传递不能实现交换两个整数
      int t;
      t = a;
      a = b;
      b = t;  
 }

在C++,可以通过引用或者指针来实现两个整数的交换,实质上是通过地址传递来实现两个整数的交换的。

void swap2(int &a,int &b)//引用传递 
{
 int temp;
 temp = a;
 a = b;
 b = temp;
}

还可以通过指针来实现两个整数的交换

void swap2(int *a,int *b)//指针,地址传递 
{
     int temp;
     temp = *a;
     *a = *b;
     * b = temp;
}

那么,java如何实现两书交换呢?

方法1:
通过数组方式交换:

如果一定要通过一个 method 来实现,下面的形式也许可以:

void   swap(int[]   a)   { 
        if   (a   ==   null   ||   a.length   !=   2) 
                throw   new   IllegalArgumentException(); 
        int   temp   =   a[0]; 
        a[0]   =   a[1]; 
        a[1]   =   temp; 
} 

2)方法2:构造引用

如AtomicReference
构造对象,将a,b作为对象的属性,然后操作对象,最后获得对应的属性。

static void swap(AtomicReference<Integer> a, AtomicReference<Integer> b) {
            Integer c = a.get();
            a.set(b.get());
            b.set(c);
        }
public static void main(String[] args) {
            AtomicReference<Integer> a = new AtomicReference<Integer>(10);
            AtomicReference<Integer> b = new AtomicReference<Integer>(20);
            swap(a, b);

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

        }
        //a = 20
          b = 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值