基本定义
- 静态代码段
在Java类的设计中,如果某段代码想让其只执行一次,比如一个HashMap的生成,一个数据库连接池的产生,就可以把相关代码写入static{}包裹的代码段中。这个代码段就叫静态代码段,在项目启动时就主动执行,即由虚拟机内部完成调用,且只执行一次,适合做变量的初始化。
- 静态变量
任何方法都不能声明静态变量,只能在类体中生成,可以由整个类进行调用,在类被调用时被赋值。
- 静态方法
在类被加载时装载,在类被调用时执行,且只能使用类中的其他静态变量,内部不能存在任何形式的this和super调用,因为static方法无需实例化任何对象。
- 构造代码段
类加载时,即new ClassName()或Class.forName("ClassPath.ClassName.class")执行的代码。
- 构造方法(构造函数)
在类需要实例化时进行调用,执行顺序滞后于构造代码段。
各段代码的执行顺序
静态代码段 >构造代码段>构造方法,如果有父类的话,先执行父类和子类的静态代码段并将父类和子类的静态变量进行装载,然后执行父类的构造代码段和构造函数,再次是子类的构造代码段和构造函数,即,基类静态代码段>子类静态代码段>基类构造函数段>基类构造方法>子类构造代码段>子类构造方法。这里用一个简单的例子证明一下。
public class