01传递值类型参数:
值参数是实参的值传递给形参,实质是复制一份实参给形参,不影响在方法调用中的实参的值
内存分配图如下
02值参数传递引用类型参数:
内存原理:
在Add方法中形参f拿到了实参a在栈中的副本,副本中存储着对象的地址。所以,f与a指向了同一个对象。
这时操作的不是副本,而是副本所指的对象,即操作a所指对象
03值参数引用传递的参数时
Add方法中改变了f所指向的对象,指向一个new的student对象,此时a仍指向原对象,这时再对student进行操作,
便不再会影响实参a所指的对象。
04.按引用传递参数(引用参数)
此时不再复制实参在栈中的副本,而是将实参在栈中的地址传给形参,也就是实参与形参共用栈中的值。此时在方法中对形参所 做的任何操作,都会影响实参(说白了就是形参和实参都是同一个)
按引用传递也分为值类型和引用类型两种情况
当传递值类型参数时:
内存原理:
当传递值类型参数时:
原理图
原理图