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

如何在Java中传递参数给一个方法

发布时间:2023-07-04 11:14:36

在Java中,我们可以通过传递参数给方法来向方法传递数据。在Java中,参数的传递有两种类型:按值传递和按引用传递。下面将详细介绍这两种方式。

1. 按值传递:

在Java中,基本数据类型(如int、float、double、boolean)是按值传递的,方法接收到的是实际值的副本,而不是原始变量本身。

例子:

public class Main {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("调用方法前的值:" + num);
        changeValue(num);
        System.out.println("调用方法后的值:" + num);
    }

    public static void changeValue(int num) {
        num = 20;
        System.out.println("方法内的值:" + num);
    }
}

输出结果:

调用方法前的值:10
方法内的值:20
调用方法后的值:10

可以看到,调用方法前后,变量num的值并没有改变,所以可以得出结论:按值传递时,方法内部对参数的修改不会影响到原始的变量。

2. 按引用传递:

在Java中,除了基本数据类型外,其他所有的数据类型(如数组、类对象等)都是按引用传递的,方法接收到的是实际值的引用(地址),可以通过引用修改实际值。

例子:

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println("调用方法前的值:" + Arrays.toString(arr));
        changeValue(arr);
        System.out.println("调用方法后的值:" + Arrays.toString(arr));
    }

    public static void changeValue(int[] arr) {
        arr[0] = 100;
        System.out.println("方法内的值:" + Arrays.toString(arr));
    }
}

输出结果:

调用方法前的值:[1, 2, 3]
方法内的值:[100, 2, 3]
调用方法后的值:[100, 2, 3]

可以看到,调用方法后,数组arr的第一个元素的值被修改为100,这表明方法内部对参数的修改影响到了原始的数组。

需要注意的是,虽然一般说按引用传递可以修改原始值,但是如果在方法内部对引用进行重新赋值,那么原始值不会被修改。

例子:

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println("调用方法前的值:" + Arrays.toString(arr));
        changeValue(arr);
        System.out.println("调用方法后的值:" + Arrays.toString(arr));
    }

    public static void changeValue(int[] arr) {
        arr = new int[]{4, 5, 6};
        System.out.println("方法内的值:" + Arrays.toString(arr));
    }
}

输出结果:

调用方法前的值:[1, 2, 3]
方法内的值:[4, 5, 6]
调用方法后的值:[1, 2, 3]

可以看到,尽管在方法内部对arr重新赋值了,但是原始数组arr并没有被修改。

总结:

在Java中,可以通过传递参数给方法来向方法传递数据。对于基本数据类型,按值传递时方法内部对参数的修改不会影响到原始的变量;对于其他数据类型,按引用传递时方法内部对参数的修改会影响到原始的值,但是如果在方法内部对引用进行重新赋值,那么原始值不会被修改。