Java执行顺利中:
(优先级从高到低。)静态代码块 ---》mian方法 ---》构造代码块 ---》 成员变量 ---》构造方法。
package com.krycai;
import org.junit.Test;
public class JavaTest {
static class A{
//静态变量引出的静态方法,随类加载
private static String staticStr =initStaticStr();
//构造代码块
{
System.out.println("构造代码块1");
}
//对象成员,实例化后加载
private String str=initStr();
//构造函数
public A(){
System.out.println("构造函数2");
}
private static String initStaticStr(){
System.out.println("静态代码块4");
return "initStaticStr";
}
private String initStr(){
System.out.println("成员变量3");
return "initStr";
}
}
static class B extends A{
public B(){
System.out.println("子类构造函数5");
}
}
private static void question2(){
new B();
System.out.println();
}
public static void main(String[] args) {
question2();
}
}
输出结果
静态代码块4
构造代码块1
成员变量3
构造函数2
子类构造函数5
文章写的粗糙,指在给自己增加一些理解跟笔记。
详情可以查询:
成员变量与构造函数的执行顺序 http://blog.csdn.net/anlidengshiwei/article/details/43523629
Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
http://blog.csdn.net/qq_27093465/article/details/75339803