Java-java 值传递swap到底是怎么回事
package Thread.ThreadStudy.valueparse传奇敌敌畏;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 13-4-7
* Time: 下午2:56
* To change this template use File | Settings | File Templates.
*/
public class setGetValueParse {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
setGetValueParse young=new setGetValueParse();
young.setAge(12);
young.setName("小明");
setGetValueParse old=new setGetValueParse();
old.setAge(80);
old.setName("老刘");
System.out.println("before swap: " + "young=" + young + " name: " + young.getName()+"=="+young.getAge());
System.out.println("before swap: " + "old=" + old + " name: " + old.getName()+"==="+old.getAge());
// swap(young,old);
setGetValueParse temp =new setGetValueParse();
temp=old;
young=temp;
old=young;
System.out.println("after swap: " + "young=" + young + " name: " + young.getName()+"==="+young.getAge());
System.out.println("after swap: " + "old=" + old + " name: " + old.getName()+"==="+old.getAge());
}
private static void swap(setGetValueParse young, setGetValueParse old) {
setGetValueParse temp =new setGetValueParse();
temp=old;
young=temp;
old=young;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
第一段代码和第二段代码,最后打印出来的都是main函数中对象old和yang的值。3、4、5步骤就是swap代码造成的影响。
第二段代码示意图中,没有将最开始swap:old和swap:yong分别指向old和yong对象,主要是因为那样图片就不好分辨了
另:交换代码应该写成这样:
temp=old;
old=yong;
yong=temp;
你确定第二段代码逻辑没错?
temp=old;
young=temp;
old=young;
最后old、young都是原先的old
输出结果好像是反的吧,应该上面的输出结果是第二段程序的,下面的是第一段程序的。主要是一个函数传参的问题。你在函数内部对变量本身的操作结束后对传入的变量是没有影响的;这就相当于
int a=1
int b=2
swap(a,b)
print (a+" "+b)
结果为 1 2
swap(a,b){
int t =0;
t =a;
a = b;
b =t;
}