为什么说Java的方法参数传递总是值传递
java中方法的传递总是值传递,也就是传递的是实际参数的拷贝。
定义一个方法
void swap(int x,int j){ int z = x; x = j; j = z;}这是一个交换函数,熟习C语言的朋友一定能一眼就看出这个程序有问题:
x 和 j 传递进入方法中后,方法中使用的是实际参数的两个拷贝,交换的也是拷贝的对象,方法执行完毕后,对象都会销毁,而外部的实际参数没有改变。在Java中也是这样。
但上面的例子形式参数是java的基本类型,有些朋友认为假如对象类型作为参数,传递的是对象的引用,也就是引用调用。实际上,这种了解方式是不对的,而且这种了解还具备普遍性。所以下面给出了Java核心技术卷里面的一个例子来详细的阐述一下这个问题。
void swap(Employee x,Employee y){ Employee z = x; x = y; y = z;}这里Employee只是普通的Java对象
假如对象作为参数传递的是引用,那么结果会是x与y交换了,但是实际上的输出结果也没有发生变化。
其实这个例子和上面的例子一样,进入方法时候,x,y是实际参数的拷贝,x,y在方法内部交换,并不会对外面的实际参数产生影响,而且方法执行完毕后,x与y就会销毁。这里画一张图可以很好的说明:
001.png
交换的是执行时栈里面的引用,执行完后会被销毁,实际参数没有变化。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 为什么说Java的方法参数传递总是值传递
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 为什么说Java的方法参数传递总是值传递