Java函数参数传递:值传递与引用传递
发布时间:2023-06-06 02:50:54
Java是一种面向对象的编程语言,它使用函数作为代码单元来实现程序的模块化,方便开发人员编写可维护,可重用的代码。在Java中,函数可以接受参数并返回值。在使用函数时,参数的传递方式分为值传递和引用传递。
值传递:
值传递又称为按值传递,在函数调用时,将实参的值复制一份传递给形参,即将实参的值复制到一个新的内存空间中,然后把这个内存空间地址传递给形参,在函数中对形参进行修改不会影响到实参。这样保证了实参不会受到函数中的任何改变的影响。
下面来看一个简单的例子:
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);
}
public static void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
System.out.println("x=" + x + " y=" + y);
}
}
运行结果:
x=20 y=10 a=10 b=20
可以看到,在swap方法中交换了x和y的值,但是在main方法中输出a和b的值仍然未变。这是因为在函数调用时,将实参值复制到了一个新的内存空间中,swap方法中修改的只是形参的值,不会对实参造成影响。
引用传递:
引用传递又称为按引用传递,在函数调用时,将实参的地址传递给形参,形参与实参指向同一块内存空间,对形参的修改会影响实参的值。使用引用传递可以通过改变参数实现更复杂的逻辑操作。
下面来看一个引用传递的例子:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
changeArr(arr);
System.out.println(Arrays.toString(arr));
}
public static void changeArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
}
}
运行结果:
[2, 4, 6, 8, 10]
可以看到,在changeArr方法中,修改了数组arr的值。在main方法中arr数组也受到了影响,输出的是修改后的结果。
总结:
在Java中,一个函数可以修改变量的值,但是在选择函数传递参数时,需要考虑是使用值传递还是引用传递。对于基本类型的参数,使用值传递,对于对象类型的参数,使用引用传递。
参考文献:
[Java基础知识详解](https://www.cnblogs.com/wfy666/p/6284631.html)
