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