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

Java函数的参数传递方式和实例解析

发布时间:2023-06-25 01:17:56

Java中函数的参数传递方式包括值传递和引用传递。值传递是指将实参的值复制一份传递给形参,而引用传递是指将实参的引用(地址)传递给形参,形参和实参共享同一块内存空间。

以值传递为例,当一个方法被调用时,它将会创建一个新的变量存储传入的参数值,这个变量和原来的参数并没有任何关系。方法中对这个变量的任何操作都不会影响原来的参数。例如:

public static void main(String[] args) {
    int num = 10;
    changeValue(num);
    System.out.println(num);  // 输出10
}

public static void changeValue(int num) {
    num += 5;
}

在上面的例子中,main方法中的num变量的值被赋值为10,然后传递给changeValue方法。在changeValue方法中对num变量的值进行修改,但是由于是值传递,原始的num变量并没有受到任何影响,依旧是10。

什么是引用传递?当一个对象被传递到一个方法中时,方法接收的是这个对象的引用。这个引用的作用是指向在内存中保存的对象。当方法内部使用这个引用去修改对象的属性时,这个对象的当前实例状态也会发生变化。例如:

public static void main(String[] args) {
    User user = new User("Tom", 18);
    changeUser(user);
    System.out.println(user.getName());  // 输出Jerry
}

public static void changeUser(User user) {
    user.setName("Jerry");
}

public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

在上面的例子中,我们定义了一个User类,包含一个name和age属性。在main方法中创建了一个User对象,并将其引用传递给changeUser方法。在changeUser方法内部,我们调用了User对象的setName方法,将name属性设置为“Jerry”。由于这是引用传递,所以内存中实际的对象的name属性也被改变了。在main方法中可以看到name属性被修改为“Jerry”。

综上所述,Java中参数传递方式包括值传递和引用传递。值传递是将实参的值复制一份传递给形参,而引用传递是将实参的引用(地址)传递给形参,形参和实参共享同一块内存空间。在实际开发中,我们需要理解这两种传递方式的特点,选择合适的方式来传递参数。