java如何值传递
Java 中的值传递机制
在 Java 中,方法参数的传递方式始终是值传递(pass by value)。无论是基本数据类型还是对象引用,传递的都是值的副本。
基本数据类型的值传递
对于基本数据类型(如 int、double、boolean 等),传递的是变量的实际值的副本。方法内对参数的修改不会影响原始变量。
public class Main {
public static void modifyValue(int x) {
x = 10;
}
public static void main(String[] args) {
int num = 5;
modifyValue(num);
System.out.println(num); // 输出 5,原始值未改变
}
}
对象引用的值传递
对于对象类型(如数组、类实例),传递的是对象引用的副本(即内存地址的副本)。方法内通过引用修改对象属性会影响原始对象,但重新赋值引用不会影响原始引用。

public class Main {
static class Person {
String name;
Person(String name) { this.name = name; }
}
public static void modifyObject(Person p) {
p.name = "Alice"; // 修改对象属性,会影响原始对象
}
public static void reassignReference(Person p) {
p = new Person("Bob"); // 重新赋值引用,不影响原始引用
}
public static void main(String[] args) {
Person person = new Person("John");
modifyObject(person);
System.out.println(person.name); // 输出 "Alice"
reassignReference(person);
System.out.println(person.name); // 仍输出 "Alice"
}
}
关键点总结
- Java 中所有参数传递都是值传递,不存在引用传递(pass by reference)。
- 对于基本类型,传递的是值的副本,方法内修改不影响原始变量。
- 对于对象类型,传递的是引用的副本,方法内可以通过引用修改对象属性,但重新赋值引用不会影响原始引用。
通过理解值传递机制,可以避免在方法调用时因误解传递方式导致的逻辑错误。






