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

了解Java函数的不同参数传递方式

发布时间:2023-07-03 22:32:54

在Java中,参数传递方式有两种:值传递和引用传递。

值传递是指将实际参数的值复制一份,传递给形式参数,即在函数调用时,实际参数的值赋给了形式参数。这样,在函数内部修改形式参数的值并不会影响到实际参数。Java的基本数据类型(如int、float等)以及字符串都是采用值传递方式传递的。例如:

int a = 10;
changeValue(a);
System.out.println(a); // 输出10

void changeValue(int b) {
   b = 20;
}

上述代码中,通过将变量a的值复制给形式参数b,形参b的值被修改为20,但是实参a的值并没有改变。

引用传递是指将实际参数的引用地址传递给形式参数,形式参数和实际参数指向同一个内存地址。这意味着在函数内部修改形式参数的值会对实际参数产生影响。Java的对象类型(如数组、类等)都是采用引用传递方式传递的。例如:

int[] arr = {1, 2, 3};
changeArray(arr);
System.out.println(arr[0]); // 输出100

void changeArray(int[] array) {
   array[0] = 100;
}

上述代码中,将数组arr的引用地址传递给形式参数array,然后修改了array[0]的值为100,因为arr和array指向同一个内存地址,所以arr[0]的值也被修改为100。

需要注意的是,虽然形式参数的修改会影响到实际参数,但是对形式参数重新赋值并不会影响到实际参数。因为重新赋值会改变形式参数的引用地址,使其指向新的地址,而不再和实际参数指向同一块内存空间。

总结起来,Java的参数传递方式有两种:值传递和引用传递。基本数据类型和字符串采用值传递,对象类型采用引用传递。当使用值传递方式传递参数时,在函数内部修改形参不会影响到实参;而使用引用传递方式传递参数时,在函数内部修改形参会影响到实参。