PDF 课件和源代码下载地址:
https://github.com/geektime-geekbang/LetsJava
作者回复: 这个作为初学的内容,是有点超纲了。SoftReference,WeakReference和PhantomReference首先是一个类,并不是一个Java的基本数据类型。这三个更多的是和 Java 的垃圾回收相关。如果是你在准备面试,可以研究一下,如果是平时工作使用,建议谨慎使用。这三个类的Javadoc对它们的特性解释的比较清楚了。
简单来说,soft是能不回收就不回收,适合做cache,weak是能回收就回收,如果没有别的正常引用指向一个对象,只有weak的reference,那就回收。PhantomReference就直接不能使用,只是用来影响finalize方法。
总结一下,这三种引用,我的建议是,能不用就不用。
作者回复:
我理解你的问题是对象被多次引用,而不是类。不会的,一个对象无论被多少引用引着,都只有一个
作者回复:
终于抽空把你这个问题给回复了..... 问题有点复杂,详见FAQ里的文章
https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/02%E7%AB%A0-Java%E9%87%8C%E7%9A%84%E5%90%84%E7%A7%8D%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%8D%A0%E7%94%A8%E5%A4%9A%E5%B0%91%E5%86%85%E5%AD%98%E7%A9%BA%E9%97%B4.md
作者回复:
隔着屏幕都能感觉到满满的学习的满足感
作者回复: 补充完整一下, 避免歧义:
如果是基本类型,那么这块地址“对应的内存里”的值就是这个基本类型的值;如果是引用类型,那么这块地址“对应的内存里”存储的“值”是堆中这个实例的地址。
作者回复: 差不多会容易混淆。Java中没有指针。不允许操作内存地址。参数传递也不大一样。Java没有多继承。除此之外OO的内容和cpp差不多了。