作者:荆灬樊小姐_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✋