Java基本数据类型方法参数传递本质是值传递,即复制数值生成独立副本,修改形参不影响实参。例如main中a=5传入modify后,形参a变为15,但main中a仍为5。

Java 中基本数据类型在方法参数传递中天然就是值传递,不需要额外操作或技巧。
基本数据类型传参的本质是复制数值
当你把一个 int、double、boolean 等基本类型变量作为实参传入方法时,JVM 会把该变量当前存储的**具体数值**拷贝一份,赋给方法的形参。这个形参在栈中是一个全新的局部变量,和原始变量完全独立。
- 修改形参的值,只影响方法内部的副本,不影响调用方的原始变量
- 方法执行结束,形参变量随之销毁,原始变量毫发无损
- 哪怕形参名和实参名相同(比如都叫 a),它们也位于不同栈帧,互不干扰
典型代码验证逻辑
看这段标准示例:
public static void main(String[] args) {
int a = 5;
modify(a);
System.out.println(a); // 输出:5,没变
}
public static void modify(int a) {
a = a + 10; // 形参 a 变成 15
System.out.println(a); // 输出:15
}
执行过程清晰可见:main 栈帧里的 a=5 被拷贝进 modify 栈帧,modify 中所有对 a 的操作,都只作用于那个副本。
立即学习“Java免费学习笔记(深入)”;
为什么不能“绕过”值传递?
因为基本类型变量本身不持有地址引用——它直接存值。你无法通过它间接定位到别的内存位置,也就不存在“让外部变量跟着变”的机制。这是语言设计决定的底层行为,不是编程习惯问题。
如果业务上需要多个返回值或反向修改,应改用对象封装、数组传参或返回新值再赋值等方式,而不是试图改变基本类型的传参方式。


















