java 交换两个参数的值

我们都知道,在c/c++中要交换两个参数的值有两种方法。

1 直接在main函数中交换(交换整形a   b的值)

int temp=a;

a=b;

b=temp;

2  自己定义一个swap的方法

swap(int *p1,int * p2){

int temp=*p1;

*p1=*p2;

*p2=temp;

}

学过java的都知道,java中没有指针的概念,那么在java中何如实现两个值的交换呢?

1 最好的方法是在main方法里实现交换

int temp=a;
a=b;
b=temp;


2 现在我要像c那样,自己写一个方法实现交换,可行吗?

public static void main(String[] args) {
		int a=1,b=2;
		System.out.println("change before:"+a+"\t\t"+b);
		change(a,b);
		System.out.println("change after:"+a+"\t\t"+b);
	}
	private static void change(int a, int b) {
		int temp=a;
		a=b;
		b=temp;
	}

change before:1 2
change after:1

于是,这种方案是行不通的。

现在,我们把这个程序变一变

public class Test {
	static class	A{
		int value;
	}
	public static void main(String[] args) {
		Test.A aa=new Test.A();
		Test.A bb=new Test.A();
		aa.value=1;
		bb.value=2;
		System.out.println("change before:"+aa.value+"\t\t"+bb.value);
		change(aa,bb);
		System.out.println("change after:"+aa.value+"\t\t"+bb.value);
	}
	private static void change(A aa, A bb) {
		int temp=aa.value;
		aa.value=bb.value;
		bb.value=temp;
	}
}
change before:1 2
change after:2 1

达到了我们的要求

有人可能回想:把int换成Integer。这样的答案也是否定的,并不可行。

总结:java中传递基本数据类型的时候是值传递,故不会改变实参的值。

java中传递对象类型的时候是地址传递,可以改变实参的值。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值