当前页面: 开发资料首页 → J2SE 专题 → Java里面怎么实现swap
Java里面怎么实现swap
摘要: Java里面怎么实现swap
由于Java只有pass by value,我想知道怎样可以实现一个swap函数,即已知void swap(int x,int y)和int a=1,b=2,通过调用swap(a,b),让a=2,b=1,不知如何编写这个swap函数,望各位大侠指教,呵呵
我尝试了很多方法,还是没找到方法,望各位大侠多指教,小弟我比较着急,^_^
你把X 和Y封装成Integer对象看来使用如Integer p= new Integer(x); int t=p.intValue
public class testA{
public static void swap(int x,int y){
int temp=x;
x=y;
y=temp;
System.out.println(x);
System.out.println(y);
}
public static void main(String[] args) {
swap(1,2);
}
}
这个swap方法和c语言有什么区别阿?
Java语言中的对象引用实际上是一个指针.
解决方法:
88324877(寂寞呆头鱼) ( ) 信誉:100 Blog 2006-11-17 08:52:29 得分: 0
你把X 和Y封装成Integer对象看来使用如Integer p= new Integer(x); int t=p.intValue
=====
楼上的楼上不对
当然不可能,不过一般swap都是这样的
public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
luyan0711(凡人) 的不对,大家都知道吧。
malligator(大螟) 也不对,当是对象时,方法取得的是引用的copy。swap(obj a,obj b)
调用是swap(c,d),就是对象a,b的引用进行了复制。引用a和c都指向同一对象,引用b和d都指向同一对象。如果Integer有setValue方法没有问题,但可惜没有,用int t=p.intValue能取得对象的值,但还是不能交换。如果创建新对象,影响的只是c和d,不会影响a,b。