开始之前,我们先来搞懂下面这两个概念:形参&实参。方法的定义可能会用到 参数,参数在程序语言中分为:
- 形参(形式参数) :用于定义函数(方法)时接收的定义参数,不需要有确定的值。
- 实参(实际参数) :用于传递给函数(方法)的参数,必须有确定的值。
在函数里可能会对形参进行修改,那最终会不会对实参有影响?这就涉及到这篇文章讨论的点了。
程序设计语言将实参传递给方法(或函数)的方式分为两种:
- 值传递 (pass by value):其指的是在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。简单来讲,值传递,所传递的是该参数的副本,是复制了一份的,本质上不能认为是一个东西,指向的不是一个内存地址。
- 引用传递(pass by reference) :是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
总结一下值传递和引用传递的区别:
|
| 值传递 | 引用传递 |
| — | — | — |
| 本质 | 创建副本给函数 | 把自己的内存地址给函数 |
| 对实参的影响 | 不会影响实参 | 会影响实参 |
概念说完了,我们先来说结论:java是值传递。也就是说,函数里对形参的修改,不会影响到实参。
那有些人看到这句话,肯定心里嘀咕着你在扯淡吧。举个很简单的例子:
public class ParamTest {
public static void main(String[] args) {
User user =

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





