Java中方法的值传递方式只有一种:值传递。
值传递机制:
- 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
public static void main(String []args){ int a=10,b=20; System.out.println("排序前:"+"a="+a+",b="+b); valueTransferTest t=new valueTransferTest(); t.swap(a,b); System.out.println("排序后:"+"a="+a+",b="+b); } public void swap(int m,int n){ int temp=m; m=n; n=temp; }
|
实参a,b将值传给形参,排序后a,b的值未发生改变,对实参值没有影响。
内存中

- 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
class Data{ int m; int n; } public static void main(String[] args) { Data data = new Data(); data.m = 10; data.n = 20; System.out.println("m = " + data.m + ", n = " + data.n); swap(data); System.out.println("m = " + data.m + ", n = " + data.n); }
public static void swap(Data data){ int temp = data.m; data.m = data.n; data.n = temp; }
|
内存中显示

参数保存的是实际对象的地址值,改变的只是地址值指向的堆内存中的实际对象,并没有真正改变参数,参数的地址值没有变。