当前位置: 代码迷 >> Java相关 >> 代码运行结果没有发生交换,谁能说明原因。
  详细解决方案

代码运行结果没有发生交换,谁能说明原因。

热度:94   发布时间:2007-04-18 21:22:21.0
代码运行结果没有发生交换,谁能说明原因。

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;
}
}

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

搜索更多相关的解决方案: 结果  代码  运行  

----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------
恩!
对!
----------------解决方案--------------------------------------------------------
为什么数组可以交换?

----------------解决方案--------------------------------------------------------

如果要交换应该怎样写呢


----------------解决方案--------------------------------------------------------

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

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

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

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


----------------解决方案--------------------------------------------------------
  相关解决方案