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

Java中函数的参数传递方法有哪些?

发布时间:2023-06-09 10:24:59

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

1. 值传递

值传递是指在函数调用时,由调用者将实参的值拷贝一份传递给被调用函数,在被调用函数中对该值的修改不会对实参产生影响。

举个例子:

public static void main(String[] args) {
    int num1 = 10;
    int num2 = 20;

    swap(num1, num2);

    System.out.println("num1: " + num1);
    System.out.println("num2: " + num2);
}

public static void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}

在这个例子中,我们在main函数中声明了两个变量num1和num2,并将它们的初始值分别设置为10和20。接着,我们调用了一个名为swap的函数,并将num1和num2作为参数传递给它。在swap函数中,我们交换了a和b的值,然后函数结束。

运行程序后,我们发现输出的结果仍然是:

num1: 10
num2: 20

可见,虽然在swap函数中交换了a和b的值,但这并没有对main函数中的num1和num2产生影响。这是因为在函数调用时,Java会将实参的值拷贝一份传递给被调用函数,因此在swap函数中修改a和b的值不会影响到main函数中的num1和num2。

2. 引用传递

引用传递是指在函数调用时,由调用者将实参的地址拷贝一份传递给被调用函数,在被调用函数中对该地址所指向的值的修改会影响到实参本身。

举个例子:

public static void main(String[] args) {
    int[] arr = {1, 2, 3, 4, 5};

    addOne(arr);

    for (int i = 0; i < arr.length; i++) {
        System.out.println("arr[" + i + "]: " + arr[i]);
    }
}

public static void addOne(int[] array) {
    for (int i = 0; i < array.length; i++) {
        array[i]++;
    }
}

在这个例子中,我们在main函数中声明了一个长度为5的整型数组arr,并将其初始化为{1, 2, 3, 4, 5}。接着,我们调用了一个名为addOne的函数,并将arr作为参数传递给它。在addOne函数中,我们使用for循环遍历了整个数组并将每个元素的值加1,然后函数结束。

运行程序后,我们可以看到输出的结果是:

arr[0]: 2
arr[1]: 3
arr[2]: 4
arr[3]: 5
arr[4]: 6

可见,addOne函数中对数组元素的修改已经影响到了原始的arr数组,也就是说,在使用引用传递时,函数能够直接修改参数所指向的内存中的值。

需要注意的是,Java中虽然可以使用对象引用传递实现类似C++中的指针功能,但Java并没有指针的概念。引用只是Java中的一种操作对象的方式,而Java中的数组本质上就是对象。因此,Java中的引用传递也被称为对象引用传递。