| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:代码运行结果没有发生交换,谁能说明原因。
只看楼主 加入收藏
changyawei
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-11-3
收藏
 问题点数:0 回复次数:5 
代码运行结果没有发生交换,谁能说明原因。

public class Test
{


public static void swap(UserName A,UserName B)
{
UserName temp = A;
A = B;
B = temp;
}
public static void main(String args[])
{
//Test t = new Test();
UserName userA = new UserName("A");
UserName userB = new UserName("B");
swap(userA,userB);
System.out.println(userA.getName());
System.out.println(userB.getName());
}
}

class UserName
{
String name = "";
public UserName(String name)
{
this.name = name;
}

public String getName()
{
return name;
}
}

以上这段代码得运行结果,没发生交换,谁能说下它得运行过程。。。

搜索更多相关主题的帖子: 结果 代码 运行 
2007-04-18 21:22
beyond_p
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2007-1-17
收藏
得分:0 

对一个方法的参数进行传值
传的是值的拷贝
你在方法内改变的只是拷贝的值
而原来的值并没有改变

你传的是对象的引用
那么既是对引用的指向的拷贝进行了改变
而本身(swap方法以外)并没有改变


越是深入的学习,就越来越感觉到自己知道的太少了...
2007-04-18 21:43
amyvmiwei
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-4-4
收藏
得分:0 
恩!
对!
2007-04-18 22:26
changyawei
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-11-3
收藏
得分:0 
为什么数组可以交换?
2007-04-19 07:50
heheli
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-1-14
收藏
得分:0 

如果要交换应该怎样写呢

2007-04-19 08:23
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

数组也是不能直接交换的,只能交换里面的元素

如果直接用数组的引用传来传去,一样是没有用的

如果你要交换,你就可以调用对象的方法,把里面的数据改了,而不是简单的把对象转来转去

因为在JAVA中,所有传递的参数都是值传递,也就是说你改变了参数的指向对原来的数据是没有影响的


可惜不是你,陪我到最后
2007-04-19 09:10
快速回复:代码运行结果没有发生交换,谁能说明原因。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014406 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved