Java面试八股之值传递和引用传递的区别

  1. 简述值传递和引用传递

Java中基本类型变量和引用类型变量(即对象),本质上都是值传递。不过由于在栈中,基本类型变量存储的是值,而对象变量在栈中存储的是对象在堆中的内存地址,这让对象变量的值传递变得稍微有些复杂了。

基本类型的变量,在方法中作为参数传入时,会被复制一份作为形参,因此不管怎么操作都不影响实参。

对应来说,对象变量本质上也是复制一份作为形参,只不过这里的值变成了对象的地址。这样一来,对参数的操作变成了对同一个对象的操作,因此形参的操作会影响到传入的实参。

值传递:在方法调用时,实际参数的值被复制一份传递给方法中的对应形式参数。这意味着方法内部对形式参数的修改不会影响到实际参数的原始值。

引用传递:虽然Java通常被称为“按值传递”,但在处理对象引用时,其行为类似于“引用传递”。具体来说,当一个对象引用作为参数传递时,实际传递的是该对象引用的副本(即内存地址)。这意味着方法内部可以通过该引用副本访问和修改对象的状态,但不能直接更改实际引用本身指向的内存位置。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值