1. 值传递
值传递是指在方法调用过程中,实际传递的是变量的值,如果传递的是基本数据类型或者不可改变的对象,则不会改变原有变量的值。这是Java中的默认传递方式。
示例1:
public class ValuePassingExample{
public static void main(String[] args) {
int originalValue = 10;
System.out.println("Original Value: " + originalValue);
changeValue(originalValue);
System.out.println("Modified Value: " + originalValue);
}
private static void changeValue(int num) {
num = num + 5;
System.out.println("Value Changed: " + num);
}
}
输出结果:
Original Value: 10
Value Changed: 15
Modified Value: 10
从上面的示例可以看出,在方法调用changeValue()方法之前,原始的变量originalValue的值为10。在调用方法changeValue()时,将原始变量的值传递给了形参num。而在方法中对num变量的操作不会影响到原始变量的值,也就是说,原始变量originalValue的值保持不变。
2. 引用传递
引用传递是指在方法调用过程中,实际传递的是对象的引用,修改引用对象的属性值,会对原始对象的属性值产生改变,但是不能让引用参数"指向"另外一个对象。
示例2:
public class ReferencePassingExample {
public static void main(String[] args) {
StringBuilder originalName = new StringBuilder("David");
System.out.println("Original Name: " + originalName);
changeName(originalName);
System.out.println("Modified Name: " + originalName);
}
private static void changeName(StringBuilder name) {
name.append(" Smith");
System.out.println("Name Changed: " + name);
}
}
输出结果:
Original Name: David
Name Changed: David Smith
Modified Name: David Smith
从上面的示例可以看出,在方法调用changeName()方法之前,原始变量originalName引用指向了一个String类型的对象"Davis"。在调用方法changeName()时,将原始变量的引用传递给了形参name,形参name指向了原有的对象"Davis"。在方法中对name对象的属性进行了修改,即在"Davis"后面追加了一个" Smith",此时原始变量originalName与name引用都指向了修改后的对象"David Smith"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解java的值传递、地址传递、引用传递 - Python技术站