欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java学习笔记,

来源: javaer 分享于  点击 13502 次 点评:123

Java学习笔记,


Java学习笔记 001 Java初始化顺序

 class Dog {  
    public Dog() {  
        System.out.println("Dog");  
    }  
    static{  
        System.out.println("super static block");  
    }  
      
    {  
        System.out.println("super block");  
    }  
}
public class Mastiff extends Dog {  
    public Mastiff() {  
        System.out.println("Mastiff");  
    }  
  
    {  
        System.out.println("block");  
          
    }  
    static {  
        System.out.println("static block");  
    }  
      
    public static void  main(String[] args){  
        Mastiff mastiff1=new Mastiff();
		Mastiff mastiff2=new Mastiff();
        Dog dog1=new Dog();
        Dog dog2=new Dog();	
    }  
} <pre name="code" class="java">输出:
super static block
static block
super block
Dog
block
Mastiff
super block
Dog
block
Mastiff
super block
Dog
super block
Dog




由此可以得出结论:
a 静态成员变量首先初始化(注意,Static可以看做一个静态成员,其执行顺序和其在类中申明的顺序有关)
b 普通成员初始化
c 执行构造函数。

对于静态成员(static块可以看成普通的一个静态成员,其并不一定在类初始化时首先执行)和普通成员,其初始化顺序只与其在类定义中的顺序有关,和其他因素无关

由此得出Java初始化顺序结论: 1 继承体系的所有静态成员初始化(先父类,后子类) 2 父类初始化完成(普通成员的初始化-->构造函数的调用) 3 子类初始化(普通成员-->构造函数) Java初始化顺序如图:

实例化具体对象时:静态成员只会被初始化一次,其他成员(无论父子类)都会初始化多次。

相关文章

    暂无相关文章
相关栏目:

用户点评