值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
public class TestValue {
public static void main(String[] args) {
TestValue s = new TestValue();
s.intValue();
System.out.println("++++++++++++++++++++++++++");
s.intValue2();
}
public void intValue() {
int i = 2;
int j = 8;
System.out.println("交换前i为" + i + ",j为" + j);
this.exchageValue(i, j);
System.out.println("交换后i为" + i + ",j为" + j);
}
public void exchageValue(int i, int j) {
int temp = i;
i = j;
j = temp;
System.out.println("交换方法里i为" + i + ",j为" + j);
}
public void intValue2() {
SwapInt swapInt = new SwapInt();
System.out.println("交换前i为" + swapInt.i + ",j为" + swapInt.j);
this.swapValue(swapInt);
System.out.println("交换后i为" + swapInt.i + ",j为" + swapInt.j);
}
class SwapInt {
int i = 2;
int j = 8;
}
public void swapValue(SwapInt sw) {
int temp = sw.i;
sw.i = swapInt.j;
sw.j = temp;
System.out.println("交换方法里i为" + sw.i + ",j为" + sw.j);
}
}
图示:
结论:
java中的参数传递机制:值传递机制,只不过对于对象参数,值的内容是对象的引用。
1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象的实体的首地址值)传递给形参的引用类型变量。