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

Java函数中参数的传递方法详解

发布时间:2023-06-19 23:39:29

在Java中,函数是一段可重用的代码块,可在程序中多次使用。函数按照返回值以及参数的特性可分为有返回值函数和无返回值函数。如果一个函数中需要操作某些数据,那么在调用函数时,需要传递这些数据,而在Java中,有三种参数传递方式:按值传递、按引用传递和按引用传递的值。本文将详细介绍这三种传递方式的含义和使用方法。

一、按值传递

Java中,除了基本数据类型外,所有的参数都按值传递。按值传递是指将实际参数的值传递给形式参数,从而在函数内部对参数的操作不会改变实际参数的值。

示例代码:

public class Test {
    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;
    }
}

执行结果:

a: 10, b: 20
a: 10, b: 20

可以看到,虽然在函数内部对参数进行了交换,但是在函数调用结束后,实际参数的值并没有发生改变。

二、按引用传递

按引用传递是指将参数的引用(也就是内存地址)传递给形式参数,在函数内部对参数的操作会改变实际参数的值。

Java中,由于数组也是对象,所以数组作为参数时也是按引用传递的。

示例代码:

public class Test {
    public static void main(String[] args) {
        int[] arr = {10, 20};
        System.out.println("arr[0]: " + arr[0] + ", arr[1]: " + arr[1]);
        change(arr);
        System.out.println("arr[0]: " + arr[0] + ", arr[1]: " + arr[1]);
    }
    public static void change(int[] arr){
        int temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
    }
}

执行结果:

arr[0]: 10, arr[1]: 20
arr[0]: 20, arr[1]: 10

可以看到,在函数调用结束后,实际参数的值发生了改变。

三、按引用传递的值

按引用传递的值是指将参数的引用复制一份后传递给形式参数,在函数内部对形式参数的操作不会影响实际参数的值。

Java中,String类型的参数就是按引用传递的值。

示例代码:

public class Test {
    public static void main(String[] args) {
        String str = "abc";
        System.out.println("str: " + str);
        change(str);
        System.out.println("str: " + str);
    }
    public static void change(String s){
        s = "def";
    }
}

执行结果:

str: abc
str: abc

可以看到,尽管函数内部对形参进行了修改,但是实际参数的值并没有改变。

总结:

在函数中,参数传递方式很重要,可以全局影响程序的执行效率,也可以影响参数的值,因此我们要根据实际需要选择不同的传递方式。基本数据类型和String类型的参数都是按值传递的,而对象和数组作为参数则是按引用传递的。如果需要在函数内部改变实际参数的值,则需要按引用传递;如果不需要改变实际参数的值,则要按值传递或按引用传递的值。