Java-java 值传递swap到底是怎么回事

发布于 2016-11-18 11:36:01 字数 1830 浏览 1196 评论 3

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-09-27 16:35:13

第一段代码和第二段代码,最后打印出来的都是main函数中对象old和yang的值。3、4、5步骤就是swap代码造成的影响。
第二段代码示意图中,没有将最开始swap:old和swap:yong分别指向old和yong对象,主要是因为那样图片就不好分辨了

另:交换代码应该写成这样:
temp=old;
old=yong;
yong=temp;

虐人心 2017-04-12 03:56:52

你确定第二段代码逻辑没错?
temp=old;
young=temp;
old=young;

最后old、young都是原先的old

瑾兮 2017-01-10 03:15:56

输出结果好像是反的吧,应该上面的输出结果是第二段程序的,下面的是第一段程序的。主要是一个函数传参的问题。你在函数内部对变量本身的操作结束后对传入的变量是没有影响的;这就相当于
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;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文