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

函数参数传递方式详解:Java中的值传递和引用传递

发布时间:2023-06-16 10:14:09

函数参数传递是程序设计中很重要的话题。Java中函数参数传递主要有两种方式:值传递和引用传递。这两种方式区别很大,本文将分别介绍这两种方式。 

1. 值传递 

值传递就是将一个变量的值复制一份传递给函数,函数对这份值进行修改后,原来的变量的值不受影响。在Java中,基本类型都是采用值传递的方式进行参数传递的,例如int、boolean、char等。 

public class ValuePassing {

    public static void main(String[] args) {

        int a = 10;

        System.out.println("a = " + a);//输出结果:a = 10

        changeValue(a);

        System.out.println("a = " + a);//输出结果:a = 10

    }

    public static void changeValue(int num) {

        num = 20;

        System.out.println("num = " + num);//输出结果:num = 20

    }

}

运行结果输出了两行,第一行输出了a的值,第二行输出了num的值,第三行输出了a的值。可以看到,当a的值被传递给changeValue函数时,函数内部对num进行了赋值操作,但是函数执行完后,a的值并没有被改变,这是因为传递的是a的值的一个副本。 

2. 引用传递 

引用传递是指将一个对象的引用地址作为参数传递给函数,函数内部直接对对象进行修改,原来的对象的值也被修改了。在Java中,对象类型、数组类型等都是采用引用传递的方式进行参数传递的。 

public class RefPassing {

    public static void main(String[] args) {

        int[] arr = {1,2,3};

        printArr(arr);

        changeArr(arr);

        printArr(arr);

    }

    public static void printArr(int[] array) {

        for(int i = 0;i < array.length;i++) {

            System.out.print(array[i] + " ");

        }

        System.out.println();

    }

    public static void changeArr(int[] array) {

        array[0] = 4;

        array[2] = 6;

    }

}

运行结果输出了三行,前两行是打印数组中的元素,第三行是再次打印数组中的元素。可以看到,当数组arr作为参数传递给函数printArr时,函数对数组arr的元素进行了遍历并打印。当数组arr作为参数传递给函数changeArr时,函数内部对数组arr的元素进行了修改,这些修改对原来的数组也产生了影响,所以第三行输出的元素是修改后的元素。 

综上所述,Java中的参数传递分为值传递和引用传递两种方式。在实际编程中,我们需要根据情况选择合适的传递方式,这样既可以提高程序的运行效率,又可以避免一些问题的出现。