Thinking in Java Study(04)

    技术2022-05-11  127

    初始化与清除 

    1. 以构造器确保初始化

    java利用构造器进行初始化,编译器会自动调用构造器方法,构造器是和类同名的方法。

    java会给没有构造器的类提供一个默认的构造器,构造器不带参数名称与类名相同。

    构造器可以重载,可以带参数。

    2. 方法的重载

    区分重载方法的方法,参数的数量和类型不同,参数的顺序也可以区分但不推荐。

    涉及基本类型的方法重载,需要注意向上转型和向下转型。

    3. 清除(终结和垃圾回收)

    对象不可能不被回收

    垃圾回收不等于析构 finalize()方法不同于C++的析构方法

    垃圾回收只与内存有关

    finalize()在垃圾回收时被调用,可以把垃圾回收之前应该做的事写到这个方法中,但finalize()不一定会被调用,垃圾回收只有在内存被耗尽时才会进行。

    4. 垃圾回收如何工作

    停止-复制

    先暂停程序的运行,然后将所有存活的对象从当前堆复制到另一个堆,没有被复制的全部都是垃圾。当对象被复制到新堆时,它们是一个挨着一个的,新堆保持紧凑排列。引用被修正,会降低效率。

    标记-清扫

    依据的思路是从堆栈和静态存储区出发,遍历所有引用,进而找到所有存活的对象。每当找到一个存活对象,就给对象设一个标记,这个过程不会回收任何对象。只有全部标记工作完成之后清除才开始。没有被标记的对象被释放。所剩下的空间是不连续的。

    “自适应、分代的、停止-复制、标记-清扫”,Just-In-Time,可以把程序全部或部分编译成机器码,惰性编译,用时才编译。

    5. 初始化

    初始化的顺序,先静态后非静态,先属性后构造器

    6. 数组

    数组初始化可以不固定数组长度,根据需要分配。


    最新回复(0)