在Java中,值传递(pass by value)和引用传递(pass by reference)是两种传递参数的方式。
值传递是指将实际参数的值复制一份传递给形式参数,即在方法内对形式参数的修改不会影响实际参数的值。在值传递中,方法内对形式参数的修改只在方法内部生效,不会影响方法外部的实际参数。
引用传递是指将实际参数的引用(内存地址)传递给形式参数,形式参数和实际参数指向同一块内存地址。在引用传递中,方法内对形式参数的修改会影响实际参数的值。
下面通过代码演示来说明这两种传递方式:
public class PassByValueExample {
public static void main(String[] args) {
int num = 10;
System.out.println("Before method call: " + num);
modifyValue(num);
System.out.println("After method call: " + num);
StringBuilder sb = new StringBuilder("Hello");
System.out.println("Before method call: " + sb);
modifyReference(sb);
System.out.println("After method call: " + sb);
}
public static void modifyValue(int value) {
value = 20;
}
public static void modifyReference(StringBuilder reference) {
reference.append(" World");
}
}
输出结果为:
Before method call: 10
After method call: 10
Before method call: Hello
After method call: Hello World
在上述代码中,modifyValue
方法使用值传递,将num
的值复制一份给value
,在方法内部修改value
的值不会影响num
的值。而modifyReference
方法使用引用传递,将sb
的引用传递给reference
,在方法内部修改reference
所指向的对象的值会影响sb
的值。
需要注意的是,Java中只有值传递,没有真正的引用传递。即使是传递对象时,实际上是将对象的引用(内存地址)复制一份传递给方法,所以在方法内部修改对象的属性是有效的,但是重新赋值给形式参数是无效的。
发布者:admin,如若转载,请注明出处:https://ai1024.vip/42646.html