zoukankan      html  css  js  c++  java
  • java中的初始化块

    public class Person
    {
       int a=6;//声明实例变量制定默认值,也可以认为是对象的初始化代码,执行顺序与源代码中的排列顺序相同 {   System.out.println("Person初始化块"); }
      {
        a=9;
        if(1)
        {     System.out.println("Person第二个初始化块");
        } }

      public Person()
      {
        System.out.println("Person无参构造器");  
      }
      public static void main(String[] args)
      {
        new Person();
        System.out.println(new Person().a);//a=9

      }
    }

    程序运行结果:

    Person初始化块
    Person第二个初始化块
    Person无参构造器

    从结果可以看出,当创建java对象时,系统总是先调用该类的初始化块。如果一个类中有多个普通初始化块,按定义的先后顺序执行。

    :初始化块总是在构造器之前执行。

    静态初始化块:用static修饰,又叫类初始化块。初始化块只能用static修饰。

    与普通初始化块(没有修饰符修饰)的区别是:

      普通初始化块负责对对象初始化;

      静态初始化块负责对类进行初始化。它通常对类变量执行初始化处理,不能对实例变量进行初始化处理。

    系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行(这时执行普通初始化块)。因此静态初始化块总比普通初始化块先执行。

      系统在类初始化阶段执行静态初始化块时,首先一直追溯到java.lang.Object类(如果包含静态初始化块),限制性java.lang.Object类的静态初始化快(如果有),然后执行父类的静态初始化快……最后执行该类的静态初始化块,经过这个过程才完成类的初始化。普通初始化块也类似。

  • 相关阅读:
    day32-python阶段性复习六
    golang 项目中坑
    golang crawler
    router
    golang in ubuntu
    go channel 案例分析
    go channel learning
    bee go + mgo
    URL escape and unescape
    [转]good sample of Go
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/4314578.html
Copyright © 2011-2022 走看看