在 Java 中,方法中的参数变量和传入的变量之间的关系可以通过值传递来解释。Java 中,所有方法调用都通过值传递,分为两种情况:
- 基本数据类型:方法接收的是传入变量的副本,方法内的修改不会影响原变量。
- 引用数据类型:方法接收的是对象引用的副本,引用指向同一个对象,因此通过引用修改对象的内容会影响原对象。但如果在方法内重新赋值引用变量,不会影响外部变量。
基本数据类型
public class Main {
public static void main(String[] args) {
int num = 10;
modifyBasic(num);
System.out.println("方法调用后,num = " + num); // 输出 10
}
public static void modifyBasic(int value) {
value = 20; // 修改的是方法内的副本,不影响外部变量
}
}
解释:
num
的值被复制一份传递给方法modifyBasic
。- 方法中修改的是参数
value
的副本,对原变量num
无影响。
引用数据类型
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
modifyArray(arr);
System.out.println("方法调用后,arr[0] = " + arr[0]); // 输出 99
}
public static void modifyArray(int[] array) {
array[0] = 99; // 修改的是同一个对象的内容
}
}
解释:
- 数组
arr
的引用被复制传递给modifyArray
方法。- 方法内修改数组内容会影响原数组,因为它们指向同一个对象。
重新赋值引用
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
modifyReference(sb);
System.out.println("方法调用后,sb = " + sb); // 输出 Hello
}
public static void modifyReference(StringBuilder builder) {
builder = new StringBuilder("World"); // 新创建了个对象进行赋值,修改的是引用的副本,不影响外部变量
}
}
解释:
sb
的引用被复制传递给modifyReference
。- 方法内对引用重新赋值不会影响外部变量。
总结
- 基本类型:修改的是副本,原变量不变。
- 引用类型:方法可以修改对象的内容(通过引用操作),但不能改变原变量指向的对象(重新赋值不影响)。
《Java方法中的参数变量和传入的变量之间的关系》留言数:0