首页 > 代码库 > java运行顺序-JVM之九
java运行顺序-JVM之九
简化顺序版本是:
- 父类的静态成员赋值和静态块,代码排版先后顺序执行,只运行一次
- 子类的静态成员赋值和静态块,代码排版先后顺序执行,只运行一次
- 父类代码块
- 父类构造方法
- 子类初始化块
- 子类构造方法
再次构造子类,将重复3/4/5/6步骤
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco } span.s1 { color: #000000 } span.s2 { color: #931a68 } span.s3 { color: #0326cc } span.s4 { color: #3933ff } span.s5 { color: #7e504f } span.s6 { text-decoration: underline; color: #7e504f }</style>
总之:见到静态必先行-》类中代码块-》构造。
public class Hello {
static class A{
static C c =new C();
public A(){
System.out.println("A‘s Constructor");
}
static {
System.out.println("A‘s static ");
}
}
static class B extends A{
public B(){
System.out.println("B‘s Constructor");
}
D d = new D();
C c =new C();
static {
System.out.println("B‘s static ");
}
}
static class C {
public C(){
System.out.println("C‘s Constructor");
}
static {
System.out.println("C‘s static");
}
}
static class D{
public D(){
System.out.println("D‘s Constructor");
}
static {
System.out.println("D‘s static");
}
}
public static void main(String args[]){
System.out.println("start");
B b = new B();
}
}
结果:
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }</style>start
C‘s static
C‘s Constructor
A‘s static
B‘s static
A‘s Constructor
D‘s static
D‘s Constructor
C‘s Constructor
B‘s Constructor
第二例子:
http://blog.csdn.net/wenwen091100304/article/details/49488137
java运行顺序-JVM之九