zoukankan      html  css  js  c++  java
  • java初始化顺序

    public class A {
    
        A(String str){
            System.out.println(str) ;
        }
        
        static A a = new A("A.static new A") ;
        
        static {
            new A("A.static block") ;
        }
        
        
        public void printA(){
            System.out.println("print method") ;
        }
        
        public static void print(){
            System.out.println("print static method") ;
        }
        
         static class C {
             C(){
                 System.out.println("CCC.......") ;
             }
         }
    }
    public class B extends A{
    
        B(String str) {
            super(str);
        }
    
        static B b = new B("init b") ;
        static {
            new B("B static block") ;
        }
        
        static class D {//内部类
             D(){
                 System.out.println("DDD.......") ;
             }
    public static final D d = new D() ; }
    public static void main(String[] args) { new B("main.....") ; } }

    由此可知当新建一java对象(上面main方法中new B())时,它的内部初始化顺序为:

    1.  父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行

    2.  子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行

    3.  父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行

    4.  父类构造方法

    5.  子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行

    6.  子类构造方法

    备注:java内部静态类也是在调用时初始化,和静态方法是一致的!所以内部静态类的静态变量也是在调用时初始化的!

  • 相关阅读:
    ROC曲线
    数学建模的时间表和分工
    找寻子串
    被7整除
    Java中BufferedReader和scanner的对比
    机器学习降维方法
    梯度下降法
    天池大赛
    统一认证系统(三)
    软件设计方案
  • 原文地址:https://www.cnblogs.com/iusmile/p/2679089.html
Copyright © 2011-2022 走看看