了解Java函数参数传递的原理
发布时间:2023-07-03 00:21:30
Java中的函数参数传递是通过“值传递”来实现的。具体来说,当调用一个函数时,实际参数的值被复制到形式参数中。在函数内部,对形式参数的修改不会影响到实际参数。
需要注意的是,在Java中,基本类型的参数传递是按值传递的,而引用类型的参数传递也是按值传递的,但传递的是引用的副本。
当传递一个基本类型的参数时,函数接收到的是该值的一个副本,即在函数内部对形式参数的修改不会影响到实际参数。例如:
public class Main {
public static void main(String[] args) {
int num = 10;
changeValue(num);
System.out.println(num); // 输出10
}
public static void changeValue(int value) {
value = 20;
}
}
在这个例子中,changeValue函数接收到的value参数是num的一个副本。当我们在函数内部将value修改为20时,并不会影响到num的值。
当传递一个引用类型的参数时,函数接收到的是该引用的副本,即在函数内部对形式参数的修改不会影响到实际参数所指向的对象。但是,通过引用传递,可以修改对象的成员变量。例如:
public class Main {
public static void main(String[] args) {
Person person = new Person("Tom");
changeName(person);
System.out.println(person.getName()); // 输出"Jerry"
}
public static void changeName(Person p) {
p.setName("Jerry");
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在这个例子中,Person是一个引用类型,changeName函数接收到的p参数是person的一个副本。当我们在函数内部通过副本修改p的name属性为"Jerry"时,实际上修改的是person所指向的对象的name属性。
综上所述,Java中的函数参数传递是一种“值传递”,对于基本类型的参数,传递的是值的副本;对于引用类型的参数,传递的是引用的副本,通过引用可以修改对象的成员变量。
