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

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)