现在的位置: 首页 > 综合 > 正文

初始化块

2018年02月05日 ⁄ 综合 ⁄ 共 1679字 ⁄ 字号 评论关闭

初始化块 :

1.Java构造器的作用:对单个对象进行初始化操作,然后将java对象返回给程序,从而让java对象的信息更加完整。

2.初始化块:与构造器的作用非常类似,可以对java对象进行初始化操作。 

3.Java类里的四种成员:属性,方法,构造器  ,初始化块

   一个类里可以定义多个初始化块:

                                                     相同类型的初始化块之间有顺序,前面定义的初始化块限制性,后面定义的初始化块后执行。

4.

 [修饰符]{

  //初始化块的可执行性代码;

}

初始化块的修饰符只能是static,使用static修饰的初始化块称为静态初始化块。初始化块里可以包含任何可执行性语句。

5.

初始化块执行顺序:

       当创建java对象时:1.系统先调用类里定义的初始化块(多个普通初始化块,先定义先执行)

                                        2.执行构造器。

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

注意:虽然java允许一类里定义多个普通初始化块。但这没有任何意义,因为初始化块石在创建java对象时隐式执行的,而且它们总是全部执行,因此我们完全可以把多个普通初始化块合并成一个初始化块,让程序更加简洁,可读性更强。

创建java对象时的过程分析:               

                                             Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了)接着对实例属性执行初始化,顺序是:先执行初始化块或声明属性时指定的初始值,再执行构造器里指定的初始值。

7

初始化块和构造器对比:

1.       初始化块是构造器的补充:总是在构造器之前执行,同样对对象进行初始化操作。

2.       不同:是一段固定的代码,不能接受任何参数。对同一个类所有对象所进行的初始化处理完全相同。

用法:如果有一段初始化代码对所有对象完全相同,且无需接受任何参数,就可以把这段初始化代码提取到初始化块中。提高复用与维护性能。

3.       与构造器类似:创建java对象时,会上溯到java.lang.Object类,先执行java.lang.object类得初始化块,再执行java.lang.object的构造器,一次向下执行其父类的初始化块,构造器………………最后才执行该类的初始化块和构造器,返回该类对象。

 

静态初始化块:

                   1.    如果定义初始化块时,使用static修饰符,则变成静态初始化块,也被称为类初始化块,是与类相关的,系统在类初始化阶段,执行静态初始化块。而不是在创建对象时菜执行的。因此静态初始化块总是比普通初始化块先执行。只能对类属性进行初始化,无法对实例属性进行初始化,因为类属性作用域比实例属性作用域大,可能对实例属性进行初始化时,实例属性还为产生。引起许多错误。

                  2.与普通初始化块类似,系统在类初始化阶段执行静态初始化块,先执行java.lang.object类得静态初始化块,然后执行其父类的静态初始化块。。。。。。依次向下,最后执行该类的静态初始化块。经过这个过程,才完成该类的初始化过程,只有当类初始化完成后,才可以在系统中使用这个类,访问该类的类属性,方法,或者用这个类来创建实例。

                  3.java系统加载并初始化某个类时,总是保证该类的所有父类(直接父类和间接父类)全部加载并初始化。

 

当JVM第一次主动使用某个类时,系统会在类准备阶段为该类的所有静态属性分配内存,在初始化阶段负责初始化这些静态属性,初始化静态属性的就是执行类初始化的静态代码块,或者声明类属性时指定的初始值,执行的顺序与源代码中的排列顺序相同。

 

抱歉!评论已关闭.