java基本类型参数传递是值传递,即传递实际数值的副本,形参修改不影响实参;例如modify(num)中num=5,方法内x改为100,main中num仍为5。

Java 中基本数据类型在方法参数传递时,始终是值传递——也就是说,传进去的不是变量本身,而是它当前存储的那个具体数值的副本。
基本类型传参的本质是“拷贝数值”
比如 int a = 10,变量 a 在栈中直接存着数字 10。调用方法时,Java 把这个 10 复制一份,交给形参使用。形参和实参各自独立占用栈空间,互不影响。
- 方法内修改形参,只改那个副本,原始变量值不变
- 哪怕形参名字和实参一样(比如都叫 a),它们也是两个不同内存位置的变量
- 这种机制跟赋值语句 int b = a 的行为完全一致:复制值,不共享内存
典型例子看效果
下面这段代码能清晰体现:
public static void modify(int x) {
x = 100;
System.out.println("方法内 x = " + x); // 输出 100
}
public static void main(String[] args) {
int num = 5;
modify(num);
System.out.println("方法外 num = " + num); // 仍输出 5
}
原因很直接:传进 modify 的是 5 这个数,不是 num 这个变量。方法里把副本改成 100,对原变量毫无影响。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
别被“变量名相同”误导
有人看到形参也写成 int a,就以为是同一个 a。其实不是——方法一调用,JVM 就在栈上新开一块空间给形参,把实参的值“粘贴”过去。就像你把文档另存为副本后编辑,原文档不会变。
- 实参 a 存在 main 栈帧里
- 形参 a 存在 modify 栈帧里
- 两个 a 地址不同、生命周期不同、修改互不干扰
和引用类型的关键区别
基本类型不涉及“地址”概念,它存的就是值本身;而对象类型变量存的是堆中对象的地址。所以基本类型传参只复制值,对象类型传参复制的是地址值——但两者都是值传递,只是“值”的含义不同。
理解这点,就不会误以为 Java 有引用传递,也不会奇怪为什么 swap 方法交换不了两个 int 变量。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










