java是值传值还是引用传值

本文解析Java中的值传递与引用传递,通过实例说明为何函数内部对形参的修改不影响实参,揭示了栈与堆在内存模型中的作用。重点在于理解Java方法调用中参数传递的实质和底层机制。

开始之前,我们先来搞懂下面这两个概念:形参&实参。方法的定义可能会用到 参数,参数在程序语言中分为:

  • 形参(形式参数) :用于定义函数(方法)时接收的定义参数,不需要有确定的值。
  • 实参(实际参数) :用于传递给函数(方法)的参数,必须有确定的值。

在函数里可能会对形参进行修改,那最终会不会对实参有影响?这就涉及到这篇文章讨论的点了。
程序设计语言将实参传递给方法(或函数)的方式分为两种:

  • 值传递 (pass by value):其指的是在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。简单来讲,值传递,所传递的是该参数的副本,是复制了一份的,本质上不能认为是一个东西,指向的不是一个内存地址。
  • 引用传递(pass by reference) :是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

总结一下值传递和引用传递的区别:

|
| 值传递 | 引用传递 |
| — | — | — |
| 本质 | 创建副本给函数 | 把自己的内存地址给函数 |
| 对实参的影响 | 不会影响实参 | 会影响实参 |

概念说完了,我们先来说结论:java是值传递。也就是说,函数里对形参的修改,不会影响到实参。
那有些人看到这句话,肯定心里嘀咕着你在扯淡吧。举个很简单的例子:

public class ParamTest {
   
   
    public static void main(String[] args) {
   
   
        User user = 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫小八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值