Java中常见的参数传递方式是什么?
发布时间:2023-06-23 09:59:11
Java中常见的参数传递方式有值传递和引用传递。
值传递:值传递是将参数的值复制一份,将复制后的值传递给方法。在方法中对参数的操作不会影响原始值。如果在方法中改变了参数的值,则只改变了复制后的值,而原始值不会改变。值传递可以是基本数据类型或者是对象的引用。
举个例子:
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println(a); //输出: 10
}
public static void change(int num) {
num = 20;
}
在这个例子中,我们将一个int类型的值a赋值为10,并将其作为参数传递给方法change。在change方法中,我们将参数num的值改为20。然而在主方法中,我们输出变量a的值,发现其为10,说明原始值没有发生变化,因为a在传递给change方法时被复制了一份,仅对复制品进行了改变。
引用传递:引用传递是将对象的地址作为参数传递给方法。在方法中对参数的操作会改变原始对象的值。如果在方法中改变了参数所指向对象中的属性值,则原始对象也会发生改变。引用传递仅适用于对象类型,因为基本数据类型没有改变值的方法。
举个例子:
public static void main(String[] args) {
Person p = new Person("Tom", 18);
change(p);
System.out.println(p); //输出: Person{name='Jerry', age=20}
}
public static void change(Person person) {
person.setName("Jerry");
person.setAge(20);
}
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
在这个例子中,我们创建了一个Person类型的对象p,并将其作为参数传递给方法change。在change方法中,我们修改了参数person所指向对象的名字和年龄。在主方法中,我们输出对象p的值,发现其名字为Jerry,年龄为20,说明原始对象发生了改变。
在Java中,基本数据类型的值传递和对象类型的引用传递是不可改变的,即如果将一个参数传递给某个方法,那么该参数的传递方式在整个方法调用过程中都不会发生变化。这是由于Java采用传值调用方式,而不是传引用调用方式。
