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

学习Java函数传参的正确方式

发布时间:2023-08-05 18:36:27

Java中的函数参数传递方式有两种,分别是按值传递和按引用传递。

按值传递是指将实际参数的值复制一份,传递到函数中,函数对该值的任何修改都不会影响到实际参数的值。基本数据类型(如int、float等)在函数调用时采用按值传递方式。

按引用传递是指将实际参数的引用(地址)复制一份,传递到函数中,函数对该引用指向的对象进行操作,会影响到实际参数指向的对象。引用类型(如数组、对象等)在函数调用时采用按引用传递方式。

正确使用Java函数参数传递的方式取决于对应的数据类型,下面将分别说明如何正确使用这两种传递方式:

1. 按值传递:对于基本数据类型,如int、float等,在函数调用时使用按值传递。在函数中对参数的修改不会影响到实际参数的值。例如:

public static void changeValue(int num) {
    num = 10;
}

public static void main(String[] args) {
    int a = 5;
    changeValue(a);
    System.out.println(a); // 输出5,不受函数内部修改的影响
}

2. 按引用传递:对于引用类型,如数组、对象等,在函数调用时采用按引用传递。在函数中对参数的修改会影响到实际参数指向的对象。例如:

public static void changeArray(int[] arr) {
    arr[0] = 10;
}

public static void main(String[] args) {
    int[] arr = {5, 6, 7};
    changeArray(arr);
    System.out.println(arr[0]); // 输出10,受函数内部修改的影响
}

需要注意的是,在按引用传递的情况下,如果在函数中重新给参数赋予新的引用,原始参数将不会受到影响,因为参数的引用已经改变了。例如:

public static void changeArray(int[] arr) {
    arr = new int[]{10, 11, 12};
}

public static void main(String[] args) {
    int[] arr = {5, 6, 7};
    changeArray(arr);
    System.out.println(arr[0]); // 输出5,不受函数内部修改的影响
}

此时,新的数组引用只在函数内部生效,对外部不可见。

总结来说,按值传递适用于基本数据类型,不会修改实际参数的值;按引用传递适用于引用类型,可以修改实际参数指向的对象。在编写代码时,需要根据参数类型选择适当的传递方式,以确保程序的正确性。