Java里方法的参数传递方式只有一种:值传递。
即将实际参数值的副本 (复制品)传入方法内,而参数本身不受影响。
形参:方法声明时的参数
实参:方法调用时实际传给形参的参数值
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
参数是基本数据类型,交换两个的变量的值:
package myTest;
public class ValueOrderTest3 {
int n ;
int m ;
public static void main(String args[]) {
ValueOrderTest3 v3 = new ValueOrderTest3();
v3.n=10;
v3.m=20;
System.out.println("n:" + v3.n + " " + "m:" + v3.m);
v3.swap(v3.n, v3.m);
System.out.println("n:" + v3.n + " " + "m:" + v3.m);
}
public void swap(int n, int m) {
int temp = n;
n = m;
m = temp;
}
}
输出:
结果并没有改变,此时实参赋给形参的是实参真实存储的数据值,不改变类原来的属性值。
参数是引用数据类型,交换两个的变量的值:
package myTest;
public class ValueOrderTest2 {
int n;
int m;
public static void main(String args[]) {
ValueOrderTest2 v2 = new ValueOrderTest2();
v2.n = 10;
v2.m = 20;
System.out.println("n:" + v2.n + " " + "m:" + v2.m);
v2.swap(v2);
System.out.println("n:" + v2.n + " " + "m:" + v2.m);
}
public void swap(ValueOrderTest2 v2){
int temp = v2.n;
v2.n = v2.m;
v2.m = temp;
}
}
输出:
结果改变了,交换成功了,此时实参赋给形参的是实参存储数据的地址值,类原来的属性值改变了。
参考来自尚硅谷