Java学习笔记:构造器、初始化块、静态初始化块的执行顺序?

  • 构造器、初始化块、静态初始化块的执行顺序:
    静态初始化块 > 初始化块 > 构造器
    父类 > 子类
  • 综合下来顺序就是:
    父类静态初始化块
    子类静态初始化块
    父类初始化块
    父类构造器
    子类初始化块
    子类构造器
    需要注意静态初始化块是在类第一次加载的时候就会进行初始化。
  • 例子:
public class Test {  
    public static void main(String [] args){  
        System.out.println(new B().getValue());  
    }  
    static class A{  
        protected int value;  
        public A(int v) {  
            setValue(v);  
        }  
        public void setValue(int value){  
            this.value = value;  
        }  
        public int getValue(){  
            try{  
                value++;  
                return value;  
            } catch(Exception e){  
                System.out.println(e.toString());  
            } finally {  
                this.setValue(value);  
                System.out.println(value);  
            }  
            return value;  
        }  
    }  
    static class B extends A{  
        public B() {  
            super(5);  
            setValue(getValue() - 3);  
        }  
        public void setValue(int value){  
            super.setValue(2 * value);  
        }  
    }  
}  

解析:
http://blog.csdn.net/zhumintao/article/details/53818972

  • 执行过程:
    编译器将Java源代码编译成字节码class文件
    类加载到JVM里面后,执行引擎把字节码转为可执行代码
    执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行

你可能感兴趣的:(Java学习笔记:构造器、初始化块、静态初始化块的执行顺序?)