Java的值传递机制

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);//a = 10,b = 20
}
public void swap(int m,int n){
int temp=m;
m=n;
n=temp;
// System.out.println("m="+m+",n="+n);//m = 20, n = 10
}

实参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);//m = 10, n = 20
swap(data);
System.out.println("m = " + data.m + ", n = " + data.n);//m = 20, n = 10
}
//
public static void swap(Data data){
int temp = data.m;
data.m = data.n;
data.n = temp;
}

内存中显示

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

------ 本文结束感谢您的阅读 ------