静态初始化块的执行顺序
来源:互联网 发布:舒畅和刘亦菲关系知乎 编辑:程序博客网 时间:2024/06/05 17:26
如果定义初始化块时使用了static修饰符,则变成了静态初始化块。静态初始化块时类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。
因此静态初始化块总是比普通初始化块先执行。
与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯到java.lang.Object类,先执行java.lang.Object类中的静态初始化块,然后执行其父类的静态初始化块,最后才执行该类的静态初始化块。经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问类method、类Field,或者用这个类来创建实例。
示例:class Method1
{
static {
System.out.println("Method1静态初始化块");
}
{
System.out.println("Method1普通初始化块");
}
public Method1(){
System.out.println(" Method1无参的构造器");
}
}
class Mid extends Method1
{
static {
System.out.println("Mid静态初始化块");
}
{
System.out.println("Mid普通初始化块");
}
public Mid(){
System.out.println("Mid无参的构造器");
}
public Mid(String msg)
{
this();
System.out.println("Mid的带参构造器,其参数值为:"+msg);
}
}
public class Method2 extends Mid
{
static {
System.out.println("Method2静态初始化块");
}
{
System.out.println("Method2普通初始化块");
}
public Method2(){
super(”方法2的无参构造器");
System.out.println(" Method2无参的构造器");
}
}
public class Test
{
public static void main(String [] args)
{
new Method2();
}
}
- 静态初始化块的执行顺序
- java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
- java的初始化块、静态初始化块、构造函数的执行顺序
- 父类子类的静态初始化块,初始化块,构造器执行顺序
- 父类子类的静态初始化块,初始化块,构造器执行顺序
- 静态初始化块,普通初始化块,构造器的执行顺序
- 变量初始化,构造代码块,静态代码块,执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序解析
- java静态代码块、初始化块和构造方法的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序【转】
- Java 静态代码块 初始化块 构造方法的执行顺序
- java静态代码块、初始化块和构造方法的执行顺序
- Cocos2d-x 程序是如何开始运行与结束!
- 分治法求数组最大值 一部分为2^((lgN)-1)
- Wix Note (1)
- linux 怎么让普通用户使用sudo权限不需要输入密码
- 高级OWI与ORACLE性能调整读书笔记之Latch:cache buffers chains争用情形
- 静态初始化块的执行顺序
- 青春如梦
- objective-c中 -(void)和+(void) 业精于勤荒于嬉,行成于思毁于随
- Cocos2d-x 创建Android工程和编译+导入到Eclipse编译
- 详解linux vi命令用法
- 如何在有UITextField的界面让键盘更从容的失去第一响应者
- 关于相对路径的说明
- css颜色代码对应表
- Chrome扩展:让你使用浏览器打开Office文件