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

了解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的一个副本。当我们在函数内部通过副本修改pname属性为"Jerry"时,实际上修改的是person所指向的对象的name属性。

综上所述,Java中的函数参数传递是一种“值传递”,对于基本类型的参数,传递的是值的副本;对于引用类型的参数,传递的是引用的副本,通过引用可以修改对象的成员变量。