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

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采用传值调用方式,而不是传引用调用方式。