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

Java函数的参数传递方式及其实例应用。

发布时间:2023-06-26 11:54:53

Java函数的参数传递方式包括值传递和引用传递两种方式。

1. 值传递:

值传递是指将实参的值复制一份,再将复制的值传给形参。在函数内修改形参的值不会影响实参的值。Java中的基本数据类型(如int、double等)都是以值传递方式传递参数的。

示例代码:

public class ValuePassing {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + ",b:" + b);
        swap(a, b);
        System.out.println("a:" + a + ",b:" + b);
    }
    
    public static void swap(int x, int y) {
        int temp = x;
        x = y;
        y = temp;
        System.out.println("x:" + x + ",y:" + y);
    }
}

运行结果:

a:10,b:20
x:20,y:10
a:10,b:20

在上面的代码中,我们定义了一个swap方法来交换两个整数的值。我们首先定义了两个变量a和b,分别赋值为10和20,然后分别输出a和b的值。接着,我们调用了swap方法,将a和b的值传入,交换这两个变量的值。在swap方法中,我们定义了三个局部变量:x、y和temp,分别表示传入的实参和用来交换变量值的临时变量。在交换完成后,我们输出了交换后x和y的值。但是从程序的运行结果可以看出,swap方法对传入的a和b值进行的交换操作并没有生效,a和b仍然分别是10和20。

2. 引用传递:

引用传递是指将对象地址(即引用)复制一份,再将复制的引用传给形参。在函数内修改形参的内容会影响到实参的内容。Java中的对象类型(如数组、类、接口等)都是以引用传递方式传递参数的。

示例代码:

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

    public static void change(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] * 2;
        }
    }
}

运行结果:

before change: 
1 2 3 4 5 
after change: 
2 4 6 8 10 

在上面的代码中,我们定义了一个change方法,用于将传入的数组中的每个元素乘以2。我们首先定义了一个int类型的数组arr,包含5个元素:1、2、3、4、5。然后我们输出了数组的元素值,再调用了change方法,将arr数组传入。在change方法中,我们使用for循环遍历传入的数组arr,对其中的元素值进行了修改。最后,我们再次输出了数组的元素值,可以看到数组中的每个元素都被乘以了2。

总结:

在Java中,使用值传递或引用传递来传递函数参数,需要根据参数的类型来决定。如果参数是基本数据类型,则使用值传递,如果参数是对象类型,则使用引用传递。在实际开发中,我们需要根据实际情况选择合适的参数传递方式,来实现我们想要的功能。