• 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();
            
        }
     父类静态块
    子类静态块
    父类普通静态方法
    父类块
    父类构造方法
    子类块
    子类构造器
     * */

          

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    PHP 面试踩过的坑(三)
    明天准备离职了,面对照顾自己的领导,要这样说
    别怕!MySQL引起的CPU消耗过大,我有办法
    值得收藏:一份非常完整的 MySQL 规范(一)
    emacs 快捷键设置 基础知识篇
    Ruby快速入门(三):控制语句
    Ruby快速入门(一):安装、运行、类和对象
    Ruby快速入门(二):变量、数字、数组和运算符
    Ruby快速入门(四):类和模块
    emacs安装autocomplete插件
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/9320772.html
Copyright © 2020-2023  润新知