关于Java的值传递机制

最近学的知识杂而乱,每天看着《Thinking in java》,可以把基础打的更扎实,同时也看着尚硅谷的Java视频教程,双管齐下。这是我第一次在上写东西,记录自己学到的东西,我觉得很好。今天在课上,实在过于无聊,便在牛客app上刷Java基础题,有一道题吸引了我的注意!直接贴图

图片发自App


图片发自App

这是一道来自于阿里巴巴的面试题,考察的知识点在于Java的值传递与引用传递机制。大家仔细阅读一下代码,可能有人会选择B,包括我刚开始也毫不犹豫的选择了第二个选项,还在纸上画了内存图。

图片发自App

这道题不是说有多难,可是我还是做错了,而且前几天看视频时讲Java的值传递机制就是用这道题当例题讲解的,我得好好反思自己了。当second()方法执行完时,里面的局部变量应该释放了,被jvm的垃圾收集器回收了,所以再回到first()方法里,输出的v.i的v应该是first()方法区中的v对象,它指向的i还是等于20,所以最后的结果为15,0,20。如果大家还有不明白的,直接看牛客这道题评论区里大神画的内存图吧!

图片发自App

2018.11.8。  22:10

你可能感兴趣的:(关于Java的值传递机制)