作者:荆灬樊小姐_526 | 来源:互联网 | 2023-12-12 18:17
ps:值传递机制是面向对象上的重点和难点,这篇文章的将会对值传递机制做一个说明
文章目录
❤️💬⭐️
形参:方法定义时的参数;
实参:方法调用时实际传给形参的参数值。
值传递机制:
形参是基本数据类型,实参赋给形参变量的是实参真实存储的“数据值”;
看例子
public class ValuePassed {public static void main(String[] args) {int m = 10;int n = 20;swap(m,n);System.out.println("m="+m+",n="+n);}public static void swap(int m ,int n){int temp = m;m = n;n = temp;}
}
说明:在main()里声明了m,n,在swap()里定义了两个同名形参m’和n’;将属性m,n传递给形参m’,n’,关键处就是这里,swap(m’,n’),是将m和n的值拷贝一份给形参m’,n’,不论形参如何改变不会影响到其原本的属性m和n;当swap(m’,n’)运行结束后,整个被回收机制处理,因此最终输出的结果是:m=10;n=20。
内存解析:
形参是引用数据类型,实参赋给形参变量的是实参存储的“地址值”。
class Value_propagation {public static void main(String[] args) {Data data=new Data();data.m=10;data.n=20;Value_propagation test=new Value_propagation();test.swap(data);System.out.println("m="+data.m+",n="+data.n);}public void swap(Data data) {int temp=data.m;data.m=data.n;data.n=temp;}
}class Data{int m;int n;
}
说明:此时的swap(data)方法里,是将一个对象作为了一个实参赋给形参data’,而对象又存储的是地址值,因此方法main()和方法swap(data)指向了同一块内存空间,在swap(data)里进行操作就相当于在main()里面进行操作;即使swap(data)在运行结束后,被回收处理掉了,main()里的m和n的值同样被互换了。
内存解析:
写的内容偏向口水话,希望能帮助大家和自己更好地理解值传递机制
over✋