Java中函数参数的传递方式是什么?
发布时间:2023-06-26 11:57:26
Java中函数参数的传递方式涉及到值传递和引用传递两种方式。这里我们逐一解释。
值传递:
值传递是指将参数的值复制(传递)给函数参数,函数内部进行的操作不会影响原始参数的值。这种传递方式适合于基本类型的参数或者不希望函数内对参数进行修改的场景。
例如:
public static void change(int x){
x = x + 10;
}
public static void main(String[] args){
int num = 10;
change(num);
System.out.println(num); // 输出10
}
上面的例子中,函数change接收一个基本类型的int参数x,对x进行了加法运算,但是不会修改原始参数的值。在main方法中调用change时,虽然num的值作为参数传递给函数,但是函数内部的操作并不会改变num的值,所以输出结果仍然是10。
引用传递:
引用传递是指将参数的引用地址传递给函数参数,函数内部对参数的操作会影响到原始参数的值。这种传递方式适合于对象类型的参数或者需要函数内部修改参数值的场景。
例如:
public class Person{
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
public static void changePerson(Person p){
p.name = "Jack";
p.age = 20;
}
public static void main(String[] args){
Person person = new Person("Tom", 18);
changePerson(person);
System.out.println(person.name); // 输出Jack
System.out.println(person.age); // 输出20
}
上面的例子中,函数changePerson接收一个Person类型的引用参数p,对其属性进行修改后,输出新的值。在main方法中调用changePerson时,传递了person对象的引用地址,函数内部对p的属性的修改结果会影响原始对象person的值,输出结果为Jack和20。
总结:
Java中函数参数的传递方式有值传递和引用传递两种方式,需要根据具体场景进行选择。需要注意,在Java中所有数据类型都是值(字面量非对象类型)或引用(指向类对象的指针)类型,对象是通过引用操作的。在函数内部进行引用修改操作时需要小心,避免引起错误。
