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

    初始化块是java类里可出现的第4种成员(前面依次有Field、方法和构造器),一个类里可以有多个初始化块, 相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。初始化块的语法格 式如下:
    [修饰符]{
    //初始化块的可执行性代码
    ...
    }

    初始化块的修饰符只能是static,使用static修饰的初始化块被称为静态初始化块。初始化块里的代码可以包含任何可执行性语句,包括定义局部变量、调用其他对象的方法,以及使用分支、循环语句等。

    初始化块虽然也是java类的一种成员,但它没有名字,也就没有标识,因此无法通过类、对象来调用初始化块。初始化块只在创建java对象时隐式执行,而且在构造器之前执行

    初始化块和构造器

    从某种程度上看,初始化块是构造器的补充,初始化块总是在构造器执行之前执行。系统同样可使用初始化块来进行对象的初始化操作。

    与构造器不同的是,初始化块是一段固定执行的代码,它不能接受任何参数,因此初始化块对同一个类的所有对象所进行的初始化处理完全相同。基于这个原因,不难发现初始化块的基本用法,如果有一段初始化处理代码对所有对象完全相同,且无须接收任何参数,就可以把这段初始化处理代码提取到初始化块中。
    与构造器类似,创建一个java对象时,不仅会执行该类的普通初始化块和构造器,而且系统会一直上溯到java.lang.Object类,先执行java.lang.Object类的初始化,开始执行java.lang.Object的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器...最后才执行该类的初始化块和构造器,返回该类的对象。

    静态初始化块 

    静态初始化块也被称为类初始化块,它与类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行,因此静态初始化块总是比普通初始化块先执行
    它用于对整个类进行初始化处理,通常用于对类的Field执行初始化处理,静态初始化块不能对实例Field进行初始化处理。
    它也属于类的静态成员,同样需要遵循静态成员不能访问非静态成员的规则,因此静态初始化块不能访问非静态成员,包括不能访问实例Field和实例方法。

    静态初始化块的执行顺序

    与普通初始化类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯到java.lang.Object类(如果它包含静态初始化块),先执行java.lang.Object类的静态初始化块(如果有),然后执行其父类的静态初始化块...最后才执行该类的静态初始化块,经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问这个类的类方法、类Field,或者用这个类来创建实例。

    静态初始化块,普通初始化块和构造器的执行顺序:

    1  最先执行所有的静态初始化块

          2  再执行类的普通初始化块

    3  最后执行类的构造器

  • 相关阅读:
    性能参考指标
    Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
    Java Native Interface 编程系列一
    HTTP的报文与状态码
    [译]Android调整图像大小的一些方法
    Android多线程通信机制
    Android四大组件知识整理
    Java多态与反射
    23种设计模式的优点与缺点概况
    Android应用性能优化
  • 原文地址:https://www.cnblogs.com/t0404/p/10291088.html
Copyright © 2011-2022 走看看