Thinking in Java 学习手记 第5章 初始化和清理
1、用构造器确保初始化(1)构造器采用与类相同的名称。
(2)“每个方法的首字母小写”的编码风格并不适用于构造器。
(3)构造器方法也可以接受参数。
2、方法重载
(1)一个类中可以有多个同名的方法,不同的方法通过独一无二的参数列表进行区分,这种现象称之为方法的重载。
(2)一个类可以有多个构造器,也是就是说,构造器方法也可以重载。
(3)如果你没有在类中定义构造器,系统会提供给你一个无参数的默认构造器。如果你在类中定义了其他的构造器,那个默认的无参数构造器就不能使用了。
(4)如果要在构造器中引用对象的属性,只需要在对象之前加上this.就可以了。
(5)构造器中可以调用已经被重载的其他构造器,但调用语句必须放在构造器的第一句,并且只能调用一个。
(6)static方法是基于类的,而非static方法是基于对象的。
(7)static方法中不能调用任何非static方法,非static方法可以调用static方法。
3、清理:终结处理和垃圾回收
(1)对象可能不被垃圾回收。
(2)垃圾回收并不等于析构。
(3)垃圾回收只与内存有关。
4、成员初始化
(1)Java中的变量(对象)在使用之前都必须初始化。
(2)方法中的局部变量如果没有初始化,编译时会报错。
(3)类中成员可以在定义时初始化(C++中不允许这样),也可以在构造器中初始化。
(4)无论创建多少对象,static数据只占用一份存储区域。
(5)如果一个域是静态的基本类型的域,且没有对它进行初始化,那么它就会获得基本类型的标准初始值;如果它是一个对象的引用,它的默认初始值是null。
(6)Java允许将多个静态初始化动作组织成一个特殊的“静态块”。例如:
//: initialization/Spoon.java
package initialization;
public class Spoon {
static int i;
static {
i = 47;
}
} ///:~
(7)静态成员初始化,仅在首次生成这个类的一个对象时,或者首次访问属于哪个类的静态成员时发生一次。
(8)Java中,数组被作为对象进行处理。
6、枚举类型
(1)enum表示常量集。
(2)enum和switch结构属于最佳组合。
(3)enum中会自动生成以下的的方法:
①toString()用来显示某个enum实例的名字。
②ordinal()用来表示某个特定enum常量的声明顺序。
③static value()用来按照enum常量的顺序,产生由这些常量值构成的数组。
----------------解决方案--------------------------------------------------------