一, java中函数的参数传递始终是传递的参数的副本,即传递来一个新的局部变量.
f(Person local)
main()
{
Person man;
f(man);
}
在上面的代码中,对local的操作有两种
- 如果给f函数中的local重新赋值,则local作为一个局部变量重新指向另外一个对象的内存.而main中的man仍然指向原来的对象所对应的内存.这种情况下local并没有改变main中的man.可以认为他们分道扬镳了.
- 而如果在f中修改的是local的某个字段的值,或者是调用了一个local自带的方法,这个方法能改变local的某个字段的值.在这种情况下,由于此时local和man都指向同一个内存对象,所以对local的某些字段的改变会在main中的man中体现出来.这时候仍然认为local和man还是用同一个锅吃饭的.
二,函数中的局部变量 : 函数中的局部变量在函数返回时被销毁