程序执行流程
在产生对象实例前,经历了哪些流程?
Person per = new Person()
以上代码执行前,会先加载父类的构造方法,然后再执行自身的构造方法。
public class B {
public B() {
}
static {
System.out.println("静态代码");
}
public static void main(String[] args) {
new B();
new B();
new B();
}
}
上面的代码中,会先执行静态代码块,且只会执行一次。
public class B {
public B() {
}
// 普通代码块
{
System.out.println("普通代码");
}
public static void main(String[] args) {
new B();
new B();
new B();
}
}
上面的代码中,会先执行普通代码块,且每创建一个实例就会执行一次。
public class B extends A {
public B() {
}
// 普通代码块
{
System.out.println("普通代码");
}
// 静态代码块
static {
System.out.println("静态代码");
}
public static void main(String[] args) {
new B();
}
}
上面代码的执行顺序:
父类静态代码块 -> 子类静态代码块 -> 父类普通代码块 -> 父类构造方法 -> 子类普通代码块 -> 子类构造方法