//第五章:初始化与清理
// 1:用构造器确保初始化 在Java中使用构造器使得"初始化"与"创建"捆绑在一起,两者不可分离;构造器(构造函数没有返回值)
// 2: 方法重载 方法名相同而形式参数不同的方法和构造器
// 2.1:区分重载方法 要是有几个名字相同的方法,Java如何区分它们?答案是根据参数类型列表,甚至参数的顺序去区分。
// 2.2:涉及基本类型的重载 方法重载中如果传入的实参小于方法声明中的数据类型,实参数据类型会被提升
// 方法重载中如果传入的实参大于方法声明中的数据类型,实参数据类型会被窄化
// 2.3:以返回值区分重载方法是行不通的
// 3: 默认构造器 如果没有写任何构造器,编译器会自动创建默认构造器。如果写了构造器,则不会创建默认构造器;
// 4: this关键字 this关键字只能在方法内部使用,表示对"调用方法的那个对象的引用"。但是如果在方法内部调用同一个类的另一个方法,则不必使用this,直接调用即可。
// 4.1:在构造器中调用构造器 可以使用this在一个构造方法中调用另一个构造方法。禁止在非构造方法中调用构造器。
// 4.2:static的含义 static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以的。
// static方法的主要用途是在没有创建任何对象的前提下仅仅通过类本身来调用static方法。
// 5:清理:终结处理和垃圾回收 java允许在类中定义名为finalize()方法,实现垃圾回收时的清理工作。
// 5.1:finalize()的用途何在 finalize()释放那些本地方法所创建的对象,即不是new 关键字创建出来的那些对象。本地方法是调用非Java语言代码的方法。
// 5.2:你必须实施清理 无论是"垃圾回收"还是"终结"都不保证一定会发生。如果java虚拟机并未面临内存耗尽的情况,它是不会浪费时间去执行垃圾回收以恢复内存的。
// 5.3:终结条件 使用finalize()对终结条件进行验证。System.gc()用于强制进行终结动作。
// 5.4:垃圾回收器如何工作
// 6:成员初始化 类的每个基本类型数据成员都保证会有一个初始值,引用成员初始值为null;
// 6.1:指定初始化 为成员指定初值
// 7:构造器初始化
// 7.1:初始化顺序 在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
// 7.2:静态数据的初始化 无论创建多少个对象,静态数据都只用一份存储区域。初始化的顺序是先静态对象,而后是非静态对象;
// 7.3:显式的静态初始化 static子句块中的代码仅执行一次,当首次生成这个类的对象或者首次访问这个类的静态数据成员时;
// 7.4:非静态实例初始化
// 8:数组初始化 数组的创建是在运行时刻才确定的;
// 8.1:可变参数列表 可变参数列表可以和自动装包机制和谐共处
// 9:枚举类型 enum有一个特别实用的特性,即它可以在switch语句内使用
// 10:总结
Thinking in Java-读书笔记5
最新推荐文章于 2021-03-19 00:52:39 发布