class Person {
public String name;
}
public class TestDemo {
public static void clone(Person p1, Person p2) {
p1.name = "被克隆的人";
p2 = p1;
}
public static void main(String[] args) {
Person tom = new Person();
Person jerry = new Person();
tom.name = "Tom";
jerry.name = "Jerry";
clone(tom, jerry);
System.out.println(tom.name + “ ” + jerry.name);
}
}
jerry的 name 为什么依然是 Jerry,clone方法中不是把对象jerry的地址改变为tom的地址了吗?
public String name;
}
public class TestDemo {
public static void clone(Person p1, Person p2) {
p1.name = "被克隆的人";
p2 = p1;
}
public static void main(String[] args) {
Person tom = new Person();
Person jerry = new Person();
tom.name = "Tom";
jerry.name = "Jerry";
clone(tom, jerry);
System.out.println(tom.name + “ ” + jerry.name);
}
}
jerry的 name 为什么依然是 Jerry,clone方法中不是把对象jerry的地址改变为tom的地址了吗?
你new出Person对象时访问的是他们自己的name
你在clone方法中把p1的引用指向p2但是p2的成员是不变的
要想改变name请将name加static关键字改为静态的类变量就可以了
记住一句话。 java中只有值传递 ,没有引用传递
[/Quote]