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

     使用场景:  在java程序中,当实例化对象时,对象的所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,

    才会调用对象所在类的构造函数创建对象

         初始化的原则

       (1)静态对象优先于非静态对象初始化,静态对象只能初始化一次,但非静态对象可以初始化多次。

       (2)超类优先于派生类初始化。

      (3)按照成员变量定义的顺序来进行初始化,即使变量定义散布于方法定义之中,它们仍然在任何方法(包括构造器)被调用前初始化。

    package test;
    /*java程序初始化的顺序:超类静态变量 超类静态代码块 子类静态变量 子类静态代码块 
     *  超类非静态变量 超类非静态代码块 超类构造函数  子类非静态代码块  子类非静态代码块
     *  子类构造函数*/
    
    class Base {    
        static {
            System.out.println("父类静态块");//(1)
        }
        {
            System.out.println("父类块");//(3)
        }
    
        public Base() {
            System.out.println("父类构造方法");//(4)
        }
        
        public static void A() {
            int a;//静态方法中不能有静态常量,因为static方法共享一块内存区域,主要用于累加,如果静态常量的话就不能累加了,就冲突了
            System.out.println("父类普通静态方法");
        }
        
    }
    
    public class Derived extends Base {
        static int a=1;    
        static int b=2;
        static {
            System.out.println("子类静态块");//(2)
        }
        {
            System.out.println("子类块");//(5)
        }
    
        public Derived() {
            System.out.println("子类构造器");//(6)
        }
    
        public static void main(String[] args) {    
            Base.A();        
            new Derived();
            
        }
    }
    /*
     *public static void main(String[] args) {        
            new Derived();
            Base.A();        
        }
    父类静态块
    子类静态块
    父类块
    父类构造方法
    子类块
    子类构造器
    父类普通静态方法
    */
    
    /*
     *public static void main(String[] args) {    
            Base.A();        
            new Derived();
            
        }
     父类静态块
    子类静态块
    父类普通静态方法
    父类块
    父类构造方法
    子类块
    子类构造器
     * */

          

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    Oracle11g 审计介绍
    用Go向MySQL导入.csv文件
    【Lucene】实现全文索引
    redis-3.0.1 sentinel 主从高可用 详细配置
    MySQL性能优化之max_connections配置
    数据结构算法
    inux 软件编译、安装、删除
    2015年,才开始流行的几个教育观念
    常见的几种语言函数调用约定
    关于代码调试de那些事
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/9320772.html
Copyright © 2011-2022 走看看