Java函数——参数传递方式详解
发布时间:2023-06-18 21:56:34
在Java编程中,有时需要向函数中传递参数,以便函数能执行相关操作并返回结果。Java中有三种参数传递方式:值传递、引用传递和引用传递按值传递。
值传递
值传递就是将参数的值复制一份传递给函数使用,函数对参数进行任何修改都不会改变参数本身的值。例如:
public static void main(String[] args) {
int num = 10;
change(num);
System.out.println(num); // 输出结果为10,表示num的值没有改变
}
public static void change(int a) {
a = 5;
}
在上面的代码中,change(num)的作用不是修改num的值,而是将num的值复制一份赋给形参a,所以对a的任何修改都不会影响到num的值。
引用传递
引用传递就是将参数的地址传递给函数使用,而不是复制参数的值。因此,当函数对参数进行修改时,原参数也会发生相应的改变。例如:
public static void main(String[] args) {
int[] array = {1, 2, 3};
change(array);
System.out.println(Arrays.toString(array)); // 输出结果为[10, 20, 30],表示array的值被改变了
}
public static void change(int[] a) {
for (int i = 0; i < a.length; i++) {
a[i] *= 10;
}
}
在上面的代码中,change(array)的作用是将array的地址传递给形参a,然后在函数中对a进行操作,最终改变了array的值。
引用传递按值传递
引用传递按值传递是一种特殊的传递方式,它既可以保证函数对参数的修改能够反映到原参数上,又不会改变原参数的引用地址。例如:
public static void main(String[] args) {
Person person = new Person("Alice");
change(person);
System.out.println(person.getName()); // 输出结果为Bob,表示person的名称被改变了
}
public static void change(Person p) {
p.setName("Bob");
}
class Person {
String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在上面的代码中,change(person)的作用是将person的地址传递给形参p,然后在函数中对p进行操作,最终改变了person的名称,但没有改变person的引用地址。
总结
值传递和引用传递是Java中常用的两种参数传递方式,值传递保证了参数的值不会被改变,而引用传递保证了对参数的真实修改可以反映到原参数上。引用传递按值传递是一种特殊的传递方式,既能够保证函数对参数的真实修改,在不改变原参数引用地址的前提下,又能够保证对参数值的修改不会影响原参数。开发者应该了解这些参数传递方式并善加利用,以便更好地编写出高效、可维护的Java程序。
