Java 中的函数参数传递方式
Java中的函数参数传递方式是指参数在方法调用时是如何被传递的。Java中的函数参数传递方式主要有两种:值传递和引用传递。
值传递
值传递是指将实际参数的值传给形式参数,即在方法调用时,将实参的值拷贝给形参。在方法内部对形参的修改不会影响实参的值。 Java中的基本数据类型和String类型都是采用值传递方式。
示例代码:
public class Test {
public static void main(String args[]) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("a = " + a + ", b = " + b);
}
private static void swap(int num1, int num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
}
输出结果为:
a = 10, b = 20
我们可以看到,在swap()方法内部交换了num1和num2的值,但是在main()方法中,a和b的值并没有发生变化,这说明在Java中,基本数据类型是采用值传递的方式传递参数的。
引用传递
引用传递是指将实际参数的地址传给形式参数,形参和实参指向同一个内存地址。在方法内部对形参的修改将会影响实参的值。Java中的对象类型都是采用引用传递方式。
示例代码:
public class Test {
public static void main(String args[]) {
int[] arr = {1, 2, 3, 4, 5};
change(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
private static void change(int[] array) {
for(int i=0;i<array.length;i++){
array[i] = array[i]*2;
}
}
}
输出结果为:
2 4 6 8 10
我们可以看到,在change()方法内部,修改了array数组中的元素值。而在main()方法中,输出的arr数组中的元素值也都被修改了,这说明在Java中,对象类型是采用引用传递的方式传递参数的。
需要注意的是,虽然对象类型是采用引用传递的方式传递参数,但是如果在方法内部改变了形式参数的引用,那么实际参数的引用并不会改变。
示例代码:
public class Test {
public static void main(String args[]) {
int[] arr = {1, 2, 3, 4, 5};
change(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
private static void change(int[] array) {
array = null;
}
}
输出结果为:
1 2 3 4 5
我们可以看到,在change()方法中将array赋值为null,但是在main()方法中,输出的arr数组并没有变为null,这说明在Java中,在方法内部改变形式参数的引用并不会影响实际参数的引用。
综述
Java中的函数参数传递方式主要有值传递和引用传递两种方式。基本数据类型和String类型采用值传递方式传递参数,对象类型采用引用传递方式传递参数。在方法内部修改形式参数的值会影响实际参数的值,但是修改形式参数的引用并不会影响实际参数的引用。
