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

*Java函数参数传递的方式*

发布时间:2023-05-28 06:03:50

在Java中,有两种传递函数参数的方式:传递值和传递引用。

1. 传递值

当传递基本类型变量(如int、double)或对象的时候,都是将实参的值复制一份传递给形参,即传递的是实参的副本。这样在函数内部的操作对实参没有影响,并且在函数结束时,形参销毁,实参的值不受影响。

下面是一个例子:

public class Test {
    public static void main(String[] args) {
        int num1 = 10;
        String str1 = "Hello";

        change(num1, str1);

        System.out.println(num1);  //输出10
        System.out.println(str1);  //输出Hello
    }

    public static void change(int num, String str) {
        num = 20;
        str = "World";
    }
}

在change函数中修改了num和str的值,但在main函数中输出的值仍然是原来的值,证明传递的是实参的副本。

2. 传递引用

当传递对象类型变量(如数组、类对象)时,传递的实际上是对象的引用,而不是对象本身。引用是一个指向对象存储位置的值,因此在函数内部对该对象的操作有可能改变对象本身,也就是说实参和形参指向的都是同一个对象。

下面是一个例子:

public class Test {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        change(nums);

        System.out.println(nums[0]);  //输出10
    }

    public static void change(int[] arr) {
        arr[0] = 10;
    }
}

在change函数中修改了nums数组的 个元素的值,通过在main函数中输出可以看到nums[0]的值已经改变,证明传递的是引用。

总结来说,当传递基本类型变量或对象时,传递的方式不同,需要注意是否会影响实参的值。需要传递对象时, 使用深拷贝或者序列化的方式将对象复制一份再传递,避免因为引用的改变而导致问题。