在Java中,参数传递可以是值传递或引用传递,这是两种不同的概念:
-
值传递(Pass by Value): 在值传递中,方法调用时,传递的是实际参数的值的副本。这意味着,如果在方法内部改变了参数的值,这种改变不会影响到原始参数的值。在Java中,基本数据类型(如int、float、boolean等)的传递就是值传递。
java">public class Main {public static void main(String[] args) {int num = 10;modifyValue(num);System.out.println("Outside method: " + num); // 输出:Outside method: 10}public static void modifyValue(int value) {value = 20;System.out.println("Inside method: " + value); // 输出:Inside method: 20}
}
引用传递(Pass by Reference): 在引用传递中,方法调用时,传递的是实际参数的引用(地址),而不是值的副本。这意味着,如果在方法内部改变了参数所引用的对象的状态,这种改变会影响到原始参数所引用的对象。在Java中,对象类型(如数组、类实例等)的传递是引用传递。
java">public class Main {public static void main(String[] args) {int[] arr = {1, 2, 3};modifyArray(arr);System.out.println("Outside method: " + Arrays.toString(arr)); // 输出:Outside method: [1, 4, 3]}public static void modifyArray(int[] array) {array[1] = 4;System.out.println("Inside method: " + Arrays.toString(array)); // 输出:Inside method: [1, 4, 3]}
}