值传递和引用传递的区别

(*-*)浩
(*-*)浩原创
2019-12-10 11:50:2413378浏览

值传递是指基本数据类型在方法中的传递,引用传递是指引用数据类型在方法中的传递。

举例来说,如下图程序代码运行所示: (推荐学习:web前端视频教程

cj-17.png

注:int属于基本数据类型,因此在方法中进行传递和引用时,并不会改变该变量的数值

而arr属于数组,是引用数据类型,因此在方法引用时,实际传递的是该数组在堆内存中的物理内存地址,在方法中对该数组进行操作,则会影响到该数组内部的数值,会发生改变

原因:

在java中,基本数据类型作为参数传递的时候叫做值传递,传的是值本身,

值传递:值在该方法中改变属于局部变量改变

当出了该方法就没有作用了(方法中的传递的基本数据类型就属于局部变量)

在java中,方法的传参,引用数据类型,传的是物理内存地址值,当方法中对数组内部的数值进行改变时,并未改变该数组的物理内存地址,所以当返回到主方法中,数组还是指向原来的地址。

当传入arr数组在内存中的地址值后,堆内存中的连续地址发生改变,可以影响数组整体

特例:String /基本数据类型包装类,虽然都是引用数据类型,但是在发生传参的时候,它们传的是值

以上就是值传递和引用传递的区别的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。