java中引用传递与值传递

java中的值传递与引用传递

结论: java 中只存在值传递,不存在引用传递。

值传递与引用传递的区别

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

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

1. java基本数据类型传递

在这里插入图片描述
如图所示: 变量a 传到 transfer方法中,并给a重新赋值。此时,并不会影响main 方法中的存的a 的值。

2 java引用类型的传递

2.1 java引用数据类型传递

请添加图片描述
如上图所示:changeName方法中改了person 的姓名,main方法中person 的姓名也改变了。此时很多同学会认为这是java的引用传递,其实不然,且听我后续娓娓道来。

2.2 java引用数据类型传递

请添加图片描述
如果所示: changeName方法中修改了person指向的堆内存地址,但是main方法中 person指向的堆内存地址没有变。(因为main方法中的person.getName() =“zhangsan”)
PS: java中引用类型的传递出现上面的原因先思考一下。

总结

java中只有值传递,没有引用传递。若存在引用传递,那么2.2中main方法中的person.getName==“lisi”.

上述三种场景的变量堆栈情况

1. java基本数据类型传递 ——堆栈分布情况请添加图片描述
2.1 java引用数据类型传递 ——堆栈分布情况

请添加图片描述

2.2 java引用数据类型传递 ——堆栈分布情况

请添加图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值