额,罪过做过,已经好几天没写博客了,今天多补几篇,嘿嘿。
想了想,其实大部分内容都是看书的总结而已,算不上原创,以后如果没有比较多的自己的代码还是写成装载比较好。
这里主要记录一下类的构造,初始化和销毁的过程。
构造
有如下几个特别的地方
- java延续了c++的方式使用构造器进行构造。
- 有一个默认构造器,如果自定义了构造器则默认构造器不再存在。
- 构造器能够重载。
- 重载之后如果想调用本类的其他构造器可以使用this(param)。如果是想调用父类的构造器可以使用super(param)。这两种调用只能存在一个,并且需要在构造器的第一行。
初始化
默认初始化
当类载入的时候会伴随着内存清零进行成员变量的默认初始化。初始化的值为:
char 是'/0000',int 0 ,float,double是0.0.boolean是false,引用是null。
类被载入系统中之后,就会进行一些初始化。结合类的加载,整体是这样的一个过程:
- 首先是进行类的加载,把二进制代码和类型信息加载到文本段。先加载父类,后加载子类,加载的同时对static类型的变量进行初始化。初始化顺序按照代码的顺序,并且static类型的变量只初始化一次。
- 开始构造,同样是从父类开始构造,先进行实例变量的初始化,然后开始执行构造器,如果有显示的this则先执行显示的this调用。
- 然后构造子类,先进行子类的实例变量的初始化,然后开始执行构造器,如果有显示的this则先执行显示的this调用。
- 看如下的代码例子:
销毁
哈哈,极为简单。就一句话,JVM会为你进行垃圾清理的。只要是没有引用指向的内存空间都是垃圾。
这里需要注意 finalize()方法在java中也不是析构函数,只是一个消亡时会调用的函数,通常我们有两种方式来使用它:
- 调用其他语言的析构函数。
- 来查看对象消亡是的某一属性是否是我们想要的状态,可以用来跟踪错误。如下面的代码所示: