Java中的常见函数调用和参数传递方式是什么?
发布时间:2023-06-30 17:23:51
在Java中,常见的函数调用方式有两种:值传递和引用传递。
1. 值传递(Pass by Value):
值传递是指在函数调用时,将实际参数的副本传递给形式参数,在函数内对形式参数的修改不会影响到实际参数的值。在Java中,基本类型(如int、char、boolean等)都是按值传递的方式进行参数传递。下面是一个示例:
public class PassByValueExample {
public static void changeValue(int value) {
value = 100;
}
public static void main(String[] args) {
int num = 50;
changeValue(num);
System.out.println(num); // 输出结果为50
}
}
在上面的例子中,changeValue方法接收一个int类型的参数value,并将其值修改为100。在main方法中,调用changeValue方法,将num的值作为实参传递给value。虽然在changeValue方法中修改了value的值,但是不会影响到num的值,所以最后输出的结果仍然是50。
2. 引用传递(Pass by Reference):
引用传递是指在函数调用时,将实际参数的地址传递给形式参数,在函数内通过该地址对实际参数进行修改。在Java中,除了基本类型以外,其他类型都是按引用传递的方式进行参数传递。下面是一个示例:
public class PassByReferenceExample {
public static void changeValue(int[] arr) {
arr[0] = 100;
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
changeValue(numbers);
System.out.println(numbers[0]); // 输出结果为100
}
}
在上面的例子中,changeValue方法接收一个int类型的数组参数arr,并将其中 个元素的值修改为100。在main方法中,调用changeValue方法,将numbers数组的地址作为实参传递给arr。在changeValue方法中修改了arr的值,同时也修改了main方法中的numbers数组的值,所以最后输出的结果是100。
需要注意的是,虽然引用传递可以修改实际参数的值,但是如果在方法内部重新创建了一个新的对象并将参数指向了新的对象,那么不会影响到实际参数。因为此时实际参数仍然指向原来的对象。
