Java学习---Day5静态初始化块---初始化块(构造代码块)

初始化块(构造代码块):

  1. 作用: 给对象进行初始化。对象一建立就运行,且优先于构造函数的运行
  2. 与构造函数的区别 :初始化块给所有对象进行统一初始化, 构造函数只给对应对象初始化 。是Java在创建对象时隐示执行的,在Javac编译后初始化块内代码会被还原到构造器里,而且在最前面。先执行父类初始化块后子类的。
  3. 应用 :不接受参数,将所有构造函数共性的东西定义在构造代码块中。

Java创建对象过程的初始化顺序: 先初始化块或者声明时赋值–>构造器中的初始化。创建过程包括类加载、分配内存、并行处理、初始化、对象设置、执行init方法。

static静态初始化块:

  1. 作用 :给类进行初始化。随着类的加载而执行,且只执行一次
    与构造代码块的区别:
    1)构造代码块用于初始化对象,每创建一个对象就会被执行一次;静态代码块用于初始化类,随着类的加载而执行,都只执行一次。
    2)静态代码块优先于构造代码块的执行
  2. 顺序
    (JVM在装载类时)先装载类的静态成员,再执行静态初始化块(同样,当一个类有继承自某类时,则会先装载该父类,那么,父类的装载或执行顺序,也都如句子所述)。

(在创建类的实例时)先执行实例初始化块,再执行构造器;但对于一棵继承树中,会先调用父类的构造方法,那么其执行顺序也如句子所述。

猜你喜欢

转载自blog.csdn.net/weixin_43606241/article/details/84397737