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

Java函数调用时的形参和实参

发布时间:2023-07-03 12:01:34

在Java中,函数调用是通过传递参数来完成的。函数的形参是在函数定义时声明的变量,用于接收函数调用时传递的实参。实参是在函数调用时传递给函数的值或引用。

在函数调用时,实参与形参之间的关系非常重要。它们有助于数据在不同函数之间的传递,并在函数内部进行操作和处理。

在Java中,有多种方式可以进行函数调用时的形参和实参的传递。下面是一些常见的情况:

1. 值传递:当传递基本数据类型的参数时,实参的值将被复制到形参。这意味着在函数内部对形参值的修改不会影响实参的值。

例如,假设有以下函数:

public static void add(int a, int b) {
    a = a + b;
    System.out.println("a=" + a);
}

public static void main(String[] args) {
    int x = 5;
    int y = 10;
    add(x, y);
    System.out.println("x=" + x);
}

输出将是:

a=15
x=5

在这个例子中,add函数的形参a和b的值分别是x和y的副本。在函数内部,a的值被修改为15,但是x的值保持不变。

2. 引用传递:当传递对象类型的参数时,实参的引用将被复制到形参。这意味着在函数内部对形参引用的操作将影响到实参对象的状态。

例如,假设有以下函数:

public static void changeName(Student student) {
    student.setName("Alice");
}

public static void main(String[] args) {
    Student s = new Student("Bob");
    changeName(s);
    System.out.println("Name: " + s.getName());
}

输出将是:

Name: Alice

在这个例子中,changeName函数的形参student是实参s的引用。在函数内部,通过调用setName方法修改了student引用所指向的对象的名称。因此,实参s也被修改为"Alice"。

需要注意的是,即使通过引用传递对象参数,我们无法改变实参的引用本身。也就是说,在函数内部重新分配形参的引用将不会影响到实参的引用。

3. 数组作为参数:在Java中,数组是对象,因此数组参数也是进行引用传递。

例如,假设有以下函数:

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

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4, 5};
    changeArray(array);
    System.out.println("First element: " + array[0]);
}

输出将是:

First element: 100

在这个例子中,changeArray函数的形参arr是实参array的引用。通过修改arr引用所指向的数组的 个元素,实参array的 个元素也被修改为100。

需要注意的是,如果在函数内部重新分配arr引用,将不会影响实参array本身的引用。

在实际应用中,理解Java函数调用时的形参和实参的关系非常重要。这样可以正确地使用函数调用传递参数,并避免由于参数传递错误而引起的问题。