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中,所有传递的参数都是值传递,也就是说你改变了参数的指向对原来的数据是没有影响的
----------------解决方案--------------------------------------------------------