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

Java函数的调用方式:值传递和引用传递

发布时间:2023-06-20 02:18:22

Java中的函数调用方式有两种:值传递和引用传递。这两种方式在Java中使用的频率非常高,两种方式之间的效率也有所不同。下面将详细介绍Java的函数调用方式。

1. 值传递

值传递是指在函数调用时,将实际参数的值传递给函数形式参数,也就是说,传递的是实参的副本,函数内部对参数的任何修改都不会影响实际参数。在Java中,所有的基本类型都是按值传递的,包括整型、浮点型、字符型、布尔型等。

例如:

public class Demo{
    public static void main(String[] args) {
        int a = 10;
        change(a);
        System.out.println("a="+a);
    }
    public static void change(int a){
        a = 20;
    }
}

输出结果为:a=10

以上代码中,首先定义了变量a,并且将其赋值为10,然后调用change函数,将a作为参数传递给函数。change函数中将a的值修改为20。但是实际参数a并没有发生改变,所以在main函数中输出a的值还是10。

2. 引用传递

引用传递是指在函数调用时,将实际参数的引用地址传递给函数形式参数,函数形式参数中保存了实际参数的地址,函数内部对参数的任何修改都会影响到实际参数。在Java中,除了基本类型,所有的数据类型都是按引用传递的,包括对象、数组等。

例如:

public class Demo{
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        change(arr);
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
    public static void change(int[] arr){
        for(int i=0;i<arr.length;i++){
            arr[i] *= 2;
        }
    }
}

输出结果为:

2

4

6

8

10

以上代码中,首先定义了一个长度为5的int类型数组arr,并将数组中的每个元素赋值为1,2,3,4,5。然后调用change函数,将arr作为参数传递给函数。change函数中将arr的每个元素都乘以2。由于在Java中函数参数用的是引用,所以在main函数中输出arr的元素值时,元素值已经变为2,4,6,8,10。

在Java中,当对象作为函数参数传递时,实际上传递的是对象的引用。在函数内部修改参数对实参造成的影响是持久的,这就要求我们在编写Java程序时一定要注意参数传递方式。

总结:

Java中的函数调用方式有两种:值传递和引用传递。对于基本类型,采用的是值传递,因为基本类型传递的是值本身而非内存地址。对于引用类型,传递的是内存地址,所以采用的是引用传递。在调用函数时,需要根据需要选择适当的传参方式来保证程序的正确性。