《Thinking in Java》读书笔记:初始化与清除

需积分: 10 2 下载量 113 浏览量 更新于2024-11-08 收藏 28KB DOC 举报
"Think in Java读书笔记,关于初始化和清除,特别是构建器(Constructor)和finalize()函数的讲解" 在《Thinking in Java》这本书中,第四章详细讨论了初始化和清除的过程,包括构建器、方法过载、收尾和垃圾收集等重要概念。以下是对这些知识点的深入解析: 1. 构造器(Constructor) 构造器是用于初始化新创建对象的特殊方法,它在类实例化时被调用。与常规方法不同,构造器没有返回值,即便是void类型的方法,虽然本身不返回任何值,但可以通过return语句控制流程或返回其他值。然而,构造器完全不允许有返回值,这意味着一旦执行完毕,它不会返回到调用它的代码。如果程序员未定义构造器,Java编译器会自动生成一个默认构造器。 2. 方法过载(Overloading) 方法过载是指在同一个类中可以有多个同名方法,但它们的参数列表必须有所不同(参数数量、类型或顺序)。这是Java允许的多态性表现之一,它使得方法可以根据传入的参数类型或数量选择合适的行为。 3. finalize()和垃圾收集(Garbage Collection, GC) - finalize()函数:这个特殊方法允许对象在被垃圾收集器回收前执行必要的清理操作。比如,当Java程序调用非Java代码(如C或C++),并在非Java环境中分配了内存(例如通过C的malloc()),这部分内存不会被Java的GC自动回收。这时,就需要在finalize()方法中手动调用相应的释放内存的函数(如C的free())。 - 调用时机: - 当对象被GC判断为可回收时,会先调用其finalize()方法,但并不立即回收内存。 - 在程序退出时,也会尝试调用所有对象的finalize()方法。 - 显式调用System.gc(),虽然不推荐,但可能会触发finalize()的执行。 垃圾收集器主要负责回收堆内存中的对象,它无法直接处理栈内存(通常由局部变量占用)。因此,对于那些在栈上分配且需要手动管理的内存,finalize()提供了释放资源的机会。 总结,理解并掌握这些知识点对于深入学习Java编程至关重要,它们涉及到对象的创建、生命周期管理以及内存的高效利用。在实际开发中,合理运用构造器可以确保对象的正确初始化,而理解GC和finalize()机制则有助于避免内存泄漏和提高程序的健壮性。