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

Java变量传递方式对函数的影响

发布时间:2023-06-20 17:53:33

Java变量传递方式有值传递和引用传递两种方式,这两种传递方式对函数的影响有很大区别。

值传递:

在Java中,基本数据类型的变量传递方式是值传递,即将变量的值复制一份给函数,函数内使用复制后的值而不是原始值,也就是说函数内任何对该变量的修改都不会影响原始值。

例如:

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

    public static void changeNum(int num) {
        num = 10;
        System.out.println("函数内修改num值:" + num);
    }
}

输出结果:

调用前num值:5
函数内修改num值:10
调用后num值:5

从结果可以看出,在函数内修改了num的值,但对原始值没有影响。

引用传递:

在Java中,非基本数据类型的变量传递方式是引用传递,即将变量的地址值传递给函数,在函数内使用该地址访问该变量的值,对该值的修改同样会影响原始值。

例如:

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5};
        System.out.println("调用前arr      个元素的值:" + arr[0]);
        changeArr(arr);
        System.out.println("调用后arr      个元素的值:" + arr[0]);
    }

    public static void changeArr(int[] arr) {
        arr[0] = 10;
        System.out.println("函数内修改arr      个元素的值:" + arr[0]);
    }
}

输出结果:

调用前arr      个元素的值:1
函数内修改arr      个元素的值:10
调用后arr      个元素的值:10

从输出结果可以看出,在函数内修改了arr的 个元素的值,这个修改对原始值也有影响。

可以看出,Java变量传递方式对函数的影响很大,对于值传递的变量,无论函数内如何修改都不会对原始值产生影响,对于引用传递的变量,函数内的修改都会影响原始值。因此,在编写函数时需要根据变量传递方式来决定是否修改变量值。