public class Welcome
{
public static void main(String[] args)
{
Dog dog = new Dog("bush");
System.out.println(dog.getName());
Test(dog);
System.out.println(dog.getName());
}
public static void Test(Dog dog){
dog.setName("obama");
}
}
Java code
public class Dog {
private String Name;
public Dog(String Name){
this.Name = Name;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
}
输出
bush obama
为何?
dog对象不是被拷贝一份然后传入函数再进行操作吗?
如何能改变原始的那个dog对象的内容?
------解决方案-------------------- 谁跟你说dog对象是被拷贝一份传入的
这里传入的是Dog对象实例的一个引用,通过引用能够改变实例的具体属性,就是这样
------解决方案-------------------- int 是直接数,还有如果传入的是不可变类,都可以这样理解 ,就你说的“拷贝”