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

Java中函数的参数传递

发布时间:2023-05-21 03:16:39

Java中的函数参数传递指的是将实际参数传递给函数中的形式参数。这个过程也称为参数传递或者实参传递。在Java中有两种参数传递方式,分别是值传递和引用传递。

一、值传递

所谓值传递就是传递参数时,传递的是实际参数的值,而不是实际参数的地址。在函数内部修改形式参数的值,不会改变实际参数的值。因为在函数内部使用的是形式参数的副本,对形式参数的修改不会影响实际参数的值。

下面是值传递的示例代码:

public class ValueTransferTest {

    public static void main(String[] args) {

        int a = 10;

        int b = 20;

        ValueTransferTest test = new ValueTransferTest();

        System.out.println("a=" + a + ",b=" + b);

        test.swap(a, b);

        System.out.println("a=" + a + ",b=" + b);

    }

    public void swap(int a, int b) {

        int temp = a;

        a = b;

        b = temp;

    }

}

运行结果为:

a=10,b=20

a=10,b=20

可以看到,在swap方法内部对形式参数a和b进行了交换,但是实际参数a和b的值并没有改变,仍然是10和20。

二、引用传递

所谓引用传递就是传递参数时,传递的是实际参数的地址或引用。在函数内部修改形式参数的值,会改变实际参数的值。因为在函数内部使用的是实际参数的地址或引用,对形式参数的修改会影响实际参数的值。

下面是引用传递的示例代码:

public class ReferenceTransferTest {

    public static void main(String[] args) {

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

        ReferenceTransferTest test = new ReferenceTransferTest();

        System.out.println("before modify,arr[0]=" + arr[0]);

        test.modify(arr);

        System.out.println("after modify,arr[0]=" + arr[0]);

    }

    public void modify(int[] arr) {

        arr[0] = 10;

    }

}

运行结果为:

before modify,arr[0]=1

after modify,arr[0]=10

可以看到,在modify方法内部将形式参数arr的 个元素修改为10后,实际参数arr的 个元素也变成了10。

需要注意的是,在Java中并没有所谓的指针传递,因为Java中的所有变量都是引用类型,其实是某个对象的引用而已。因此,在函数中如果修改的是对象的属性,也是会改变实际参数的值的,因为对象的属性是存储在堆内存中的。

总结:

Java中的参数传递分为值传递和引用传递。如果传递的是基本数据类型的变量,那么采用的是值传递方式,函数内部修改的是形式参数的副本,不会影响实际参数的值。如果传递的是引用类型的变量,那么采用的是引用传递方式,函数内部使用的是实际参数的地址或引用,对形式参数的修改会影响实际参数的值。无论是值传递还是引用传递,都是将实际参数的值传递给函数的形式参数。