java 方法如何传递
Java 方法参数传递机制
Java 中方法参数的传递方式分为两种:值传递(Pass by Value)和引用传递(Pass by Reference)。但严格来说,Java 只有值传递,即传递的是变量的副本。

基本数据类型的值传递
对于基本数据类型(如 int、double、char 等),方法接收的是变量的值副本,修改副本不会影响原始变量。

public class Main {
public static void modifyValue(int num) {
num = 100; // 修改的是副本,不影响原始变量
}
public static void main(String[] args) {
int x = 10;
modifyValue(x);
System.out.println(x); // 输出 10
}
}
引用类型的值传递
对于引用类型(如对象、数组),方法接收的是对象引用的副本,副本和原始引用指向同一个对象,因此修改对象会影响原始数据。
public class Main {
public static void modifyArray(int[] arr) {
arr[0] = 100; // 修改的是引用指向的对象
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
modifyArray(numbers);
System.out.println(numbers[0]); // 输出 100
}
}
不可变对象的影响
对于 String、Integer 等不可变对象,修改方法内的引用副本不会影响原始引用。
public class Main {
public static void modifyString(String str) {
str = "New Value"; // 修改的是副本引用,不影响原始引用
}
public static void main(String[] args) {
String s = "Original";
modifyString(s);
System.out.println(s); // 输出 "Original"
}
}
总结
- 基本类型:传递的是值的副本,方法内修改不影响原始变量。
- 引用类型:传递的是引用的副本,方法内修改对象会影响原始数据,但修改引用本身(如重新赋值)不影响原始引用。
- 不可变对象:类似于基本类型,方法内修改引用不影响原始引用。






