欢迎访问宙启技术站
智能推送

Java函数的参数传递方式包括哪些?

发布时间:2023-08-28 22:33:09

Java函数的参数传递方式主要有两种:按值传递和按引用传递。

1. 按值传递:

按值传递是指将实际参数的值复制一份,然后将复制后的值传递给函数。在函数内部,对参数进行修改不会影响原始参数的值。Java的基本数据类型都是按值传递的方式进行参数传递。

示例代码如下:

public class Main {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("调用前:num = " + num);
        addValue(num);
        System.out.println("调用后:num = " + num);
    }

    public static void addValue(int value) {
        value += 5;
        System.out.println("函数内部:value = " + value);
    }
}

输出结果:

调用前:num = 10
函数内部:value = 15
调用后:num = 10

可以看到,调用函数后,函数内部对参数的修改并没有影响到原始的num值。

2. 按引用传递:

按引用传递是指将实际参数的引用(内存地址)复制一份,然后将复制后的引用传递给函数。在函数内部,通过引用可以修改实际参数的值。Java的对象类型(包括数组)都是按引用传递的方式进行参数传递。

示例代码如下:

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3};
        System.out.println("调用前:array[0] = " + array[0]);
        modifyArray(array);
        System.out.println("调用后:array[0] = " + array[0]);
    }

    public static void modifyArray(int[] arr) {
        arr[0] = 10;
        System.out.println("函数内部:arr[0] = " + arr[0]);
    }
}

输出结果:

调用前:array[0] = 1
函数内部:arr[0] = 10
调用后:array[0] = 10

可以看到,调用函数后,函数内部对参数的修改影响到了原始的array数组。

需要注意的是,虽然Java的对象类型是按引用传递的方式进行参数传递,但实际上是将引用的副本传递给函数。因此,如果在函数内部将参数指向一个新的对象,原始的引用不会被改变。

综上所述,Java函数的参数传递方式包括按值传递和按引用传递。按值传递适用于基本数据类型,按引用传递适用于对象类型。