株洲房产网

当前位置: 首页 >土地

关于Java的静态块与实例块

来源: 作者: 2019-11-10 02:02:27

1.当一个类被第一次使用时,它需要被类加载器加载,而加载过程触及以下两点:(1)在加载一个类时,如果它的父类还未被加载,那末其父类必须先被加载;(2)当类加载到内存以后,依照在代码中的出现顺序履行它的静态数据域和静态块。 2.调用一个类的构造函数时,调用进程触及以下三点:(1)调用父类的构造函数;(2)依照在代码中出现顺序初始化实例数据域和实行实例块;(3)实行其构造函数体。 理论还是得通过实践来证明的,下面以一个简单的例子来证明。

关于Java的静态块与实例块

关于Java的静态块与实例块

上面的例子在类中各个部分输出对应的文字,以便从输出中看出其执行顺序。 对应的输出以下:1. Initialization 的静态块。2. Initialization 的实例块。3. A 的静态块。4. B 的静态块。5. A 的实例块。6. A 的构造函数体。7. B 的实例块。8. B 的构造函数体。由输出可以看出程序履行的顺序如下:1.首先,要使用Initialization类,则加载Initialization类,所以它的静态块被履行,因此输出1;2.程序调用Initialization的构造函数,所以Initialization类的实例块被履行,于是输出2;3.然后,履行Initialization的构造函数体,即new B(),这时候由于要使用类B,所以将其加载;4.由于类B的父类为A,那么在加载B之前,要先加载A,所以这时候履行A的加载进程,即实行A的静态块,因此输出3;5.A加载完以后,这时候就到B加载了,这时执行B的加载过程,即实行B的静态块,因而输出4;6.加载完成后,这时候依照代码,履行new B(),即B的构造函数,所以这时候又要先调用父类A的构造函数,因此这时顺次执行A的实例块和构造函数体,输出5和6;7.最后,终究到“真正”履行B的构造函数了(由于之前已经一直在说履行new B(),却是一直在调用其他),因而顺次实行B的实例块和构造函数体,输出7和8。

伟哥与降脂药物联合用药可改善阳痿

希爱力和万艾可对身体有伤害吗

哪些人可以服用万艾可

相关推荐