java中如何交换两个引用类型的变量 10
能不能实现直接交换两个引用类型变量内的地址?可能我说的不够清楚首先我有两个对象然后我再去写一个方法,去实现这两个对象的交换...
能不能实现直接交换两个引用类型变量内的地址?
可能我说的不够清楚
首先我有两个对象
然后我再去写一个方法,去实现这两个对象的交换 展开
可能我说的不够清楚
首先我有两个对象
然后我再去写一个方法,去实现这两个对象的交换 展开
7个回答
展开全部
同一类的可以,如 A a=new A("2");System.out.println(a.hashcode());//及a的物理地址(与内存地址相对应)
A b=new A("1");System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将会是a和b的hashcode()互换了,这说明了他们的内存和物理地址都互换了
A b=new A("1");System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将会是a和b的hashcode()互换了,这说明了他们的内存和物理地址都互换了
展开全部
对你们无语,把这两个变量存入数组中或者集合中,然后调用方法传入该参数,并交换,交换后返回该数组就行了!要好好利用堆的机制以及数组和集合的性质
//例子,没测试,不过就是这个理念,另外不返回obj也可以,只要你上层传入的obj引用地址不变,可以继续使用。
public class DemoTest{
public static void main(String[] args){
String a="对象1";
int b=10;//对象2
Object[] obj={a,b};
obj=swap(obj);//置换成功!
}
public Object[] swap(Object[] obj){
Object temp=obj[0];
obj[0]=obj[1];
obj[1]=temp;
return obj;
}
}
//程序这东西,没有做不到,只有想不到
//例子,没测试,不过就是这个理念,另外不返回obj也可以,只要你上层传入的obj引用地址不变,可以继续使用。
public class DemoTest{
public static void main(String[] args){
String a="对象1";
int b=10;//对象2
Object[] obj={a,b};
obj=swap(obj);//置换成功!
}
public Object[] swap(Object[] obj){
Object temp=obj[0];
obj[0]=obj[1];
obj[1]=temp;
return obj;
}
}
//程序这东西,没有做不到,只有想不到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如 A a=new A("2");
System.out.println(a.hashcode());//及a的物理地址(与内存地址相对应)
A b=new A("1");
System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将会是a和b的hashcode()互换了,这说明了他们的内存和物理地址都互换了
System.out.println(a.hashcode());//及a的物理地址(与内存地址相对应)
A b=new A("1");
System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将会是a和b的hashcode()互换了,这说明了他们的内存和物理地址都互换了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是想做对象交换吧
学java尽量不要去想地址什么的C中要想的事,java就是对象操作,对于底层的地址java其实做了屏蔽,就是为了程序员不去操作地址
学java尽量不要去想地址什么的C中要想的事,java就是对象操作,对于底层的地址java其实做了屏蔽,就是为了程序员不去操作地址
追问
我们老师非得说可以,我问他怎么弄,他说以后告诉我
还说什么引用的引用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JNI应该能实现你的要求,纯Java不太好实现
更多追问追答
追问
我们老师说的,我今天想了半天没想出来
说什么引用的引用,我试了半天也还是不行
追答
你是不是像不通过第三个参数就直接交换两个数字?另外Java中对象全是引用类型,基本变量才是值类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询