java 中基本数据类型做方法参数是值传递。调用时,实际参数的数值会被复制一份传给形参,方法内部对形参的任何修改都不会影响原始变量。

int 类型在方法调用中的内存变化是怎样的
当 int 类型作为参数传入方法时,JVM 会在栈帧中为形参分配独立的内存空间,并将实参的值拷贝进去。这意味着两者在内存地址上是完全隔离的,修改形参不会触及实参。

public class ValuePassingDemo {
public static void modify(int num) {
num = 100;
}
public static void main(String[] args) {
int a = 50;
modify(a);
System.out.println(a); // 输出 50
}
}
运行上述代码,控制台将打印 50。这证实了 modify 方法内部的赋值操作仅作用于局部副本,原始变量 a 保持不变。
double 类型是否遵循相同的传递机制
double 类型同样遵循值传递规则。尽管它是 64 位浮点数,占用空间比 int 大,但传递逻辑一致:复制数值而非引用。方法内的计算或赋值不会影响调用方的变量。

public class DoublePassingDemo {
public static void change(double val) {
val = 3.14;
}
public static void main(String[] args) {
double x = 2.71;
change(x);
System.out.println(x); // 输出 2.71
}
}
执行该程序,输出结果为 2.71。这表明无论基本数据类型的具体位数如何,Java 始终通过复制值来传递参数,确保了数据的安全性。
如果方法内抛出异常,已修改的形参会回滚吗
在值传递模式下,形参是独立的局部变量。即使方法执行过程中抛出异常导致栈帧销毁,也不会出现“回滚”概念,因为实参从未被修改。异常处理主要影响控制流,不改变值传递的本质行为。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











