值传递和引用传递区别及错误混淆点

值传递和引用传递

值传递(pass by value)

是指在调用函数时将实际参数**复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

引用传递(pass by reference)

是指在调用函数时将实际参数的地址==直接==传递到函数中,那么在函数中对==参数==所进行的修改,将影响到实际参数。


以下是口述

错误混淆点

其实很多人都会有误区都认为传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递,

并不是这样的,其实如果把值传递和引用传递放在C语言中,那就地址传递,其实Java也是可以这样理解的, 传递也是地址值,

  1. 在调用函数的时候,他会把实际参数的地址值拷贝一份传递到函数中,如果这个地址的实际参数是在栈中的话,他会直接拷贝值,所以函数内部对参数进行操作是不会对实际参数产生影响的
  2. 如果拷贝的原值在堆中的地址,他会根据该地址值去堆中找对应的对象,再进行操作,所以测函数内对值的操作是影响实际参数的.

结论

其实不管是值传递还是引用传递,其实都是一种求值策略, 在求值策略中, 叫做按共享传递, 所以简单点的来说, java的传递是值传递,而这个值是地址值,可以是栈中的值或堆中对象的引用罢了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值