我对java到底传值还是传引用的理解 - 编程入门网
我对java到底传值还是传引用的理解时间:2011-10-13 javaeye Komes不少同学总是质疑java编程中参数的传递,到底是传值还是传引用?总是模棱两可,导致编程涉及到 这方面时很苦恼,关于这个问题,我在这里记述一下我的理解,欢迎批评指正。 首先锁定一个根本方向:java中只有传值! 这里就有同学纳闷了,只有传值还要传引用这一说法干吗?为了便于理解,我们又可以这样说: 在java中,简单数据类型是按值传递的,对象是按引用传递的。。。晕,这人怎么说话颠三倒四的, 唐僧了。。。。哈哈,莫急,听我慢慢道来。。。。 1. 所谓传值,压栈的是参数值的副本,是把实参的值赋值给形参,对形参的任何修改,都不会影响到 实参的值; 2. 而传引用(类似于C中的指针),压栈的是引用的副本,是以地址的方式传递参数,传递以后,形 参和实参都指向同一个对象,只是他们名字可能不同而已,对形参的修改将影响实参的值。 细心的看客应该意识到了,上边第2条中,引用的副本本身也是按值传递,所以,刚开始那种说法就通 了——java中只有传值! 看过介绍,再结合下述例子看看是不是就懂了? Java代码
输出结果为: a v.i = 10, i = 10 b v.i = 20, i = 20 c v.i = 20, i = 10 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |