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

Java参数的传递方式:值传递和引用传递

发布时间:2023-10-18 12:23:30

Java参数的传递方式可以分为值传递和引用传递。

值传递是指将实际参数的值复制一份传递给形式参数,即在方法调用时,仅仅是将原始参数的值复制给了方法内部的参数,并不影响原始参数的值。在方法内部对形式参数进行改变,并不会影响实际参数。

例如:

public class ValuePassingExample {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("Before method call, num = " + num);
        changeValue(num);
        System.out.println("After method call, num = " + num);
    }

    public static void changeValue(int number) {
        number = 20;
        System.out.println("Inside method, number = " + number);
    }
}

在上面的例子中,定义了一个名为changeValue的方法,接收一个整数参数,并将该参数的值修改为20。在主方法中,定义了一个整数变量num,并将其值设置为10。然后调用changeValue(num)方法,并打印输出num的值。输出结果如下:

Before method call, num = 10
Inside method, number = 20
After method call, num = 10

可以看到,虽然在方法内部将number的值修改为20,但是对于原始的变量num并没有影响,依然保持着它的原始值10。

引用传递是指将实际参数的引用传递给了形式参数,即在方法调用时,实际参数和形式参数指向了同一个对象,在方法内部对形式参数所引用的对象进行的任何改变都会影响到实际参数。

例如:

public class ReferencePassingExample {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        System.out.println("Before method call, obj.name = " + obj.name);
        changeValue(obj);
        System.out.println("After method call, obj.name = " + obj.name);
    }

    public static void changeValue(MyClass object) {
        object.name = "New Name";
        System.out.println("Inside method, object.name = " + object.name);
    }
}

class MyClass {
    String name = "Original Name";
}

在上面的例子中,定义了一个名为changeValue的方法,接收一个MyClass类型的对象作为参数,并将该对象的成员变量name修改为"New Name"。在主方法中,定义了一个MyClass类型的对象obj,并将其成员变量name设置为"Original Name"。然后调用changeValue(obj)方法,并打印输出obj.name的值。输出结果如下:

Before method call, obj.name = Original Name
Inside method, object.name = New Name
After method call, obj.name = New Name

可以看到,在方法内部通过改变形式参数object所引用的对象的成员变量name的值,实际参数obj的成员变量name的值也被修改了。

总结来说,在Java中参数的传递方式有两种:值传递和引用传递。值传递是将实际参数的值复制一份传递给形式参数,不会改变原始参数的值;而引用传递是将实际参数的引用传递给形式参数,会改变原始参数所引用的对象的值。了解这两种传递方式对于编写Java程序非常重要。