问一个对象作为函数形参的问题
- Java code
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 是直接数,还有如果传入的是不可变类,都可以这样理解 ,就你说的“拷贝”
[解决办法]
只是把对象的地址传进去,并没有拷贝..
[解决办法]
实际是就是"拷贝"
因为int是字面值类型变量,就是直接复制值
而String是引用类型变量,它的值是一个"地址值",也是一个值而已.但这个值是地址值.
int的值是数字,复制数值
String的值是地址值,也就是对象的引用.复制的是引用.
[解决办法]
怎么这个东西这么多人问啊,下面一个地址看看就懂了http://blog.csdn.net/mengxiangyue/article/details/6818611