JAVA编程思想读书笔记5:初始化与清理

来源:互联网 发布:淘宝聚仙堂的符怎么样 编辑:程序博客网 时间:2024/06/05 02:05

1,构造器是一种特殊类型的方法,因为它没有返回值。这与返回值为空(void)明显不同。

2,每个重载方法都必须有一个独一无二的类型参数列表。参数顺序不同也能区分两个重载方法。

3,不能根据方法的返回值来区分重载方法。

4,this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。

5,static方法的内部不能调用非静态方法。

6,关于finalize()的使用:垃圾回收器工作时,会先调用finalize()方法。所以一般用在在垃圾回收时做一些特殊的清理工作,书中给出了这样一种情况,比如JNI中,C/C++代码调用malloc()来分配内存空间,在finalize()中可以调用free()函数来回收C分配的内存。但是垃圾回收器不能完全替代析构函数(而且绝对不能直接调用finalize()),如果希望进行除释放空间之外的清理工作,还是的明确调用某个恰当的Java方法。如果没有面临内存吃紧的情况,那么垃圾回收就不回发生,finalize()也就不会被调到,所以需要记住的是:finalize()不一定总被调用

7,在类内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散步于方法定义间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。

8,构造器是静态方法。

9,对象创建过程:

1)定位。当首次创建某对象时,或者某类的静态方法/静态域首次被调用时,Java解释器查找类路径,定位.class文件。

2)加载class并静态初始化。载入.class文件,这时候会静态初始化。静态初始化只在class对象首次加载的时候进行一次

3)分配空间。new出对象,在堆上为对象分配空间。

4)空间清零。new出的对象中得所有基本类型数据被设置成默认值,引用被设置为null。

5)非静态初始化。成员变量初始化。

6)执行构造器。

10,静态块只被调用一次,即当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时(即便从未生成那个类的对象)。

11,非静态实例初始化,即静态块去掉static关键字,发生在构造器被调用之前。

12,Object的toString方法,默认(没被重写的话)打印类的名字和对象地址。

13,枚举类型enum一般用在switch语句中,作为各个case的入口标记。

原创粉丝点击