第四章 初始化和清理
一、构造方法
1、默认构造方法
二、方法重载(的方式)
1、利用参数的顺序
2、利用参数的数据类型
3、利用参数的数量
4、利用不同的返回类型(方法型别)
三、关键字this
1、在构造方法中调用构造方法
- 构造函数的调用动作必须置于最起始处 Constructor call must be the first statement in a constructor
- 所以每个构造函数内部只能调用一个其他构造函数
四、清理:终结与垃圾回收
五、成员初始化
六、总结
这一章主要讲了初始化和垃圾清理,本书对初始化的描述都是比较基础的知识,相对比较熟悉;而垃圾清理是由"垃圾回收器"自动执行的,相对比较陌生。
"垃圾回收器"的确给程序员们们带来了极大的便利,功能也是相当的强大。它的运作方式也有多种,如:引用计数(reference counting,一种单纯、速度很慢的GC技术;计数,即是该对象被引用的次数,当计数器为0时便释放其所占用的内存)。然而为了更快的速度,它的真正原理是根据"存活于stack(栈)或static storage(静态存储空间)上"的reference而追踪到的对象,才算是尚存的对象,不被找到的对象便自然而然的变成了垃圾,这种方式下,JVM采用"自省式(adaptive)"垃圾回收机制。至于如何处处理存活对象,有"copy collectors"、"mark and sweep"、"stop-and-copy"等。不同的jdk版本会有不同的垃圾回收机制,然而本书是为Java 2而写的,如今的Java 8或许有更快、更好、更安全的"垃圾回收器"(今后有空继续研究),但不管怎样,对"垃圾回收器"还是有了一个浅显的认识。
纵使"垃圾回收器很强大",但还是有缺点。"垃圾回收器"只知道释放那些经由new分配得来的内存,因此它不知道如何释放你这个对象所占用的"特殊内存"(对象以"对象生成"之外的方式分配了某种存储空间),这时你就需要用到finalize()函数,它能让你在"垃圾回收时刻"执行某些重要的(你自己的)清理动作。然而finalize函数(或许还有其他的一些相关函数)具体如何使用,又在何时使用,本人并没有实际操作过。
总之,对于"垃圾回收器"算是有了一个很模糊的认识。以后有机会继续深入学习一下。