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内部静态类也是在调用时初始化,和静态方法是一致的!所以内部静态类的静态变量也是在调用时初始化的!

  • 相关阅读:
    P1880 [NOI1995]石子合并
    LC 1388. Pizza With 3n Slices
    1129 Recommendation System
    1131 Subway Map
    C#中的lamda实用的select用法
    C# Image与Base64编码互转函数
    签名算法的URL
    xml格式封装数据
    layer 相关网址
    js-清空array数组
  • 原文地址:https://www.cnblogs.com/iusmile/p/2679089.html
Copyright © 2011-2022 走看看