概述
观点:
首先提出观点:java中的参数传递都是“按值传递”,不存在“引用传递”!
什么是按值传递?什么是引用传递?
要理解这句话什么意思,我们首先要搞清楚什么是按值传递?什么是引用传递?
值传递:传参时把实参的值复制一份,再把复制的值赋给形参,在方法的操作中如果对形参做了改变,不会对实参的值造成影响。
引用传递:传参时把实参的地址赋给形参,在方法的操作中如果对形参做了改变,将影响到实参。
避免二者之间的理解误区:
- 错解一:传递的是数值就是值传递,传递的是地址就是引用传递。
- 错解二:如果传递的参数是基本类型的数据就是值传递,如果是对象就是引用传递。
总的来说就是:不能以传递的内容来区分值传递和引用传递。
如何理解java中的参数传递:
- 基本类型参数:对基本数据类型的参数而言,实参就表示了实际的数据值,给形参传值时传递的是实参的复制值,在方法内对形参进行修改只是对复制后的值进行修改,不会对实参的值造成影响。
- 引用类型参数:实参表示一个地址值,参数传递也就是传递地址的复制值,在方法中对形参的修改操作分两种情况讨论:
情况一: 在方法中把一个新的地址赋给了形参,这种改变影响到实参表示的地址,对实参地址所指向的内容也不会有任何影响,这种情况下明显不符合引用传递的要求。
情况二:在方法中通过传递过来的地址复制值对所指向的对象内容进行修改,这种情况下对没有对地址的具体值进行操作,所以也不会影响到实参表示的地址值,但因为复制的地址和实参地址指向相同的内容,所以会改变实参指向的内容(后者这种改变不影响我们对"值传递"的理解)。
综上所述:在java中的参数传递不管传递的内容是什么,都是"按值传递"
最后
以上就是殷勤茉莉为你收集整理的浅解 java中“值传递“问题的全部内容,希望文章能够帮你解决浅解 java中“值传递“问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复