5.1 用构造器确保初始化【initialize()】
- 构造器采用与类相同的名字
- 在Java中,初始化和创建捆绑在一起,不能分离
- 为了让方法名相同而形式参数不同的构造器同时存在,必须用到方法重载
- 区分重载方法:每个重载的方法都必须有一个独一无二的参数类型列表
- 涉及基本类型的重载:方法接受较小的基本类型作为参数。如果传入的实际参数较大,就得通过类型转换来执行窄化转换。如果不这样做,编译器就会报错。
- 以返回值区分重载方法:❌
- 又称“无参”构造器
- 只能在方法内部使用,表示对“调用方法的那个对象”的引用。注意的是,如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。当前方法中的this引用会自动应用于同一类的其他方法。只有当需要明确指出对当前对象的引用时,才需要使用this关键字。
- 在构造器中调用构造器:为一个类谢了多个构造器,有时可能想在一个构造器中调用另一个构造器,以避免重复代码。通常写this的时候都是指“这个对象”或者“当前对象”,而且它本身表示对当前对象的引用。如果为this添加了参数列表,将产生对符合此参数列表的某个构造器的明确调用。编译器禁止在出构造器之外其他任何方法中调用构造器。
- static的含义:static方法就是没有this的方法。
- finalize():一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,就能在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
- c++中,对象一定会被销毁
- Java中,①对象可能不被垃圾回收;②垃圾回收并不等于“析构”
- finalize()用途:③垃圾回收只与内存有关;也就是说使用垃圾回收器的唯一原因是了回收程序不再使用的内存。finalize()需求限制到一种特殊情况,即通过某种创建对象方式以外的方式为对象分配了存储空间。→使用了“本地方法”:本地方法是一种在Java中调用了非Java代码的方式。
- 必须实施清理:要清理一个对象,用户必须在需要清理的时刻调用执行清理动作的方法。
- 终结条件
- 垃圾回收器如何工作:对任何”活“的对象,一定能最终追溯到其存活在堆栈和静态存储区之中的引用。
5.6 成员初始化
- 对于方法的局部变量,强制程序员提供一个初始值
- 对于类的数据成员是基本类型的话,保证都会有一个初始值
- 指定初始化
- 可以用构造器来进行初始化。无法阻止自动初始化的进行,它将在构造器被调用之前发生。对于所有基本类型和对象引用,包括在定义时已经制定初值的变量,均成立。
- 初始化顺序:变量定义的先后顺序决定了初始化的顺序
- 静态数据的初始化:无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,因此它职能作用于域。静态初始化只有在必要时刻才会进行。(未完)