如下代码:public void f1(){
Person p = new Person("zhangsan");
f2(p);
//Here p的名字还是zhangsan,希望是李四,怎么办?
}public void f2(Person p){
p = new Person("lisi");
}
Person p = new Person("zhangsan");
f2(p);
//Here p的名字还是zhangsan,希望是李四,怎么办?
}public void f2(Person p){
p = new Person("lisi");
}
p1=new Person("lisi");
p=p1;
}这样就OK了,f2里的p不过是f1里的p的一个句柄的复制,只不过两个p都是指的同一个对象而以。
private String name; public void setName(String name){
this.name ="lisi";
}
}public void f1(){
Person p = new Person("zhangsan");
f2(p);
//Here p的名字还是zhangsan,希望是李四,怎么办?
}public void f2(Person p){
p.setName("lisi");
}
to:mofeir,我不是这个意思。
public Person f2(Person p){
return new Person("lisi");
}外面调用就 p = f2(p);这样
把你要的东西return就可以啦
void f2(Person p1){}
这里传入的p1只是指向对象实例p引用的拷贝.所以你怎么修改这个引用的拷贝p1,都不会影响原来的引用p,因为两个是独立的"指针".