站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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。


↑返回目录
前一篇: inner class存在的意义
后一篇: FileInputStream读汉字的问题???