Java值传递

关于Java的值传递机制

引言

由于学的东西很多了,又没有及时地复习整理 ,所以最近觉得脑子里杂而乱,因此写下这篇文章。
每天看着《Thinking in java》,可以把基础打的更扎实,同时也看着某网络教程的Java视频教程,双管齐下。这是我第一次在简书上写东西,记录自己学到的东西,我觉得很好。今天在课上,实在过于无聊,便在牛客app上刷Java基础题,有一道题吸引了我的注意!直接贴图!我是图片
这是一道来自于阿里巴巴的面试题,考察的知识点在于Java的值传递与引用传递机制。大家仔细阅读一下代码,可能有人会选择B,包括我刚开始也毫不犹豫的选择了第二个选项,还在纸上画了内存图。我是图片
这道题不是说有多难,可是我还是做错了,而且前几天看视频时讲Java的值传递机制就是用这道题当例题讲解的,我得好好反思自己了。当second()方法执行完时,里面的局部变量应该释放了,被jvm的垃圾收集器回收了,所以再回到first()方法里,输出的v.i的v应该是first()方法区中的v对象,它指向的i还是等于20,所以最后的结果为15,0,20。如果大家还有不明白的,直接看牛客这道题评论区里大神画的内存图吧!
我是图片

总结

遇到复杂问题不要想当然的认为是啥,一定要在纸上画出内存图,方便自己理解,或者是一个一个的敲到IDE里去,然后打断点调试一下,使自己理解的更加透彻,好了,今天的笔记就到这了!