Java函数的调用方式:值传递和引用传递
Java中的函数调用方式有两种:值传递和引用传递。这两种方式在Java中使用的频率非常高,两种方式之间的效率也有所不同。下面将详细介绍Java的函数调用方式。
1. 值传递
值传递是指在函数调用时,将实际参数的值传递给函数形式参数,也就是说,传递的是实参的副本,函数内部对参数的任何修改都不会影响实际参数。在Java中,所有的基本类型都是按值传递的,包括整型、浮点型、字符型、布尔型等。
例如:
public class Demo{
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println("a="+a);
}
public static void change(int a){
a = 20;
}
}
输出结果为:a=10
以上代码中,首先定义了变量a,并且将其赋值为10,然后调用change函数,将a作为参数传递给函数。change函数中将a的值修改为20。但是实际参数a并没有发生改变,所以在main函数中输出a的值还是10。
2. 引用传递
引用传递是指在函数调用时,将实际参数的引用地址传递给函数形式参数,函数形式参数中保存了实际参数的地址,函数内部对参数的任何修改都会影响到实际参数。在Java中,除了基本类型,所有的数据类型都是按引用传递的,包括对象、数组等。
例如:
public class Demo{
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]);
}
}
public static void change(int[] arr){
for(int i=0;i<arr.length;i++){
arr[i] *= 2;
}
}
}
输出结果为:
2
4
6
8
10
以上代码中,首先定义了一个长度为5的int类型数组arr,并将数组中的每个元素赋值为1,2,3,4,5。然后调用change函数,将arr作为参数传递给函数。change函数中将arr的每个元素都乘以2。由于在Java中函数参数用的是引用,所以在main函数中输出arr的元素值时,元素值已经变为2,4,6,8,10。
在Java中,当对象作为函数参数传递时,实际上传递的是对象的引用。在函数内部修改参数对实参造成的影响是持久的,这就要求我们在编写Java程序时一定要注意参数传递方式。
总结:
Java中的函数调用方式有两种:值传递和引用传递。对于基本类型,采用的是值传递,因为基本类型传递的是值本身而非内存地址。对于引用类型,传递的是内存地址,所以采用的是引用传递。在调用函数时,需要根据需要选择适当的传参方式来保证程序的正确性。
