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

掌握Java函数参数传递的方式

发布时间:2023-07-04 01:35:54

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

值传递是指将参数的值复制给形式参数,即在函数内部修改形式参数的值并不影响实际参数的值。在Java中,基本数据类型(int、float、char等)都是值传递。例如:

public static void main(String[] args) {
    int num = 10;
    changeValue(num);
    System.out.println(num); // 输出10
}

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

在这个例子中,调用changeValue函数时,实参num的值被复制给形参num,然后在函数内部修改形参num的值为20,但并不影响实参num的值。

引用传递是指将对象的引用传递给形式参数,即在函数内部修改形式参数所指向的对象的属性值会影响实际参数指向的对象的属性值。在Java中,对象类型(数组、类实例等)都是引用传递。例如:

public static void main(String[] args) {
    int[] arr = {1, 2, 3};
    changeArray(arr);
    System.out.println(Arrays.toString(arr)); // 输出[10, 20, 30]
}

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

在这个例子中,调用changeArray函数时,实参arr的引用被复制给形参arr,实参arr和形参arr指向同一个数组对象。在函数内部修改形参arr所指向的数组的元素值会影响实参arr指向的数组的元素值。

需要注意的是,虽然引用传递可以修改对象的属性值,但无法修改形参的引用本身,即无法将形参指向其它对象。例如:

public static void main(String[] args) {
    int[] arr1 = {1, 2, 3};
    int[] arr2 = {4, 5, 6};
    swapArray(arr1, arr2);
    System.out.println(Arrays.toString(arr1)); // 输出[1, 2, 3]
    System.out.println(Arrays.toString(arr2)); // 输出[4, 5, 6]
}

public static void swapArray(int[] arr1, int[] arr2) {
    int[] temp = arr1;
    arr1 = arr2;
    arr2 = temp;
}

在这个例子中,调用swapArray函数时,实参arr1和arr2的引用分别被复制给形参arr1和arr2,但在函数内部对形参arr1和arr2的引用进行了交换,并不会对实参arr1和arr2产生影响。

总结来说,Java函数参数传递的方式是:基本数据类型传递实参的值(值传递),对象类型传递实参的引用(引用传递,可以修改对象的属性值但无法修改形参的引用本身)。了解Java函数参数传递的方式能够更好地理解Java程序执行过程中参数的传递和使用机制,对编写Java程序很有帮助。