zoukankan      html  css  js  c++  java
  • Java构造器,构造代码块,静态代码块的执行顺序

    构造器

    与类同名且没有返回值,用来初始化类属性;

      构造器又分为无参构造器和有参构造器

      1.1:无参构造器 

    public class Contruction{
        //...属性...
        public Contruction(){}//无参构造器,不写,系统会自动添加
    }
    

      1.2:有参构造器 

    public class Contruction {
        private int i;
        public Contruction( int i){
    /*有参构造器,如果你定义了一个有参数的构造器,
        那么你在实例化对象的时候必须带有参数,不然会报错,
         因为你创建了一个有参数 ,那么你就很清楚的知道自己在干什么,系统不会自动添加无参构造器
    */
            this.i = i;
        }
    }
    

    构造代码块

    对象一实例化就执行,每实例化一次执行一次;

     构造代码块的格式为:

    public class Contruction {
        public Contruction() {
            System.out.pintln("我是构造方法");
        }
    
        {
            System.out.pintln("我是构造代码块");
        }
    
        public static void main(String args[]) {
             Contruction c1=new Contruction();
             Contruction c2=new Contruction();       
        } 
    }   
    

    结果:

    从结果可以看出:构造代码块比构造器优先执行。

    静态代码块

    类加载就执行,无论new 多少个对象,仅执行一次;

    public class Contruction {
        public Contruction () {
            System.out.println("我是构造方法");
        }
    
        static {
            System.out.println("我是静态代码块。无论new多少实例,我仅执行一次");
        }
    
        public static void main(String args[]){
             Contruction c1 = new Contruction();
             Contruction c2 = new Contruction();
         }
    }
    

    结果:

    从结果中可以看出,静态代码块仅执行了一次,且优先于构造器执行。

    无继承的的初始化顺序:

    静态成员变量、静态代码块   >>   普通成员变量、普通代码块   >>   构造器

     有继承的初始化顺序:

    父类静态成员变量、父类静态代码块   >>   子类静态成员变量、静态代码块   >>   父类普通成员变量、父类普通代码块   >>   父类构造器   >>   子类普通成员变量、子类普通代码块   >>   子类构造器

  • 相关阅读:
    算法--将Excel列索引转换成默认标识
    Java参考资料-中文API
    java编程规范
    POI-根据Cell获取对应的String类型值
    将Excel中读取的科学计数法表示的Double数据转换为对应的字符串
    Android进程间通信之LocalSocket通信
    Android进程间通信之socket通信
    android用讯飞实现TTS语音合成 实现中文版
    Android Junit测试框架
    java interface的两个经典用法
  • 原文地址:https://www.cnblogs.com/tooy/p/7457309.html
Copyright © 2011-2022 走看看