关于Java的静态块与实例块。
当一个类被第一次使用时,它需要被类加载器加载,而加载过程涉及以下两点:
(1)在加载一个类时,如果它的父类还未被加载,那么其父类必须先被加载;
(2)当类加载到内存之后,按照在代码中的出现顺序执行它的静态数据域和静态块。
2.调用一个类的构造函数时,调用过程涉及以下三点:
(1)调用父类的构造函数;
(2)按照在代码中出现顺序初始化实例数据域和实行实例块;
(3)执行其构造函数体。
理论还是得通过实践来证明的,下面以一个简单的例子来证明。
/** * * @author Sel * * 2014.3.29 */public class InitializationDemo { public static void main(String[] args) { new InitializationDemo(); } public InitializationDemo() { new B(); } { System.out.println("2. Initialization 的实例块。"); } static { System.out.println("1. Initialization 的静态块。"); } }class A { A() { System.out.println("6. A 的构造函数体。"); } { System.out.println("5. A 的实例块。"); } static { System.out.println("3. A 的静态块。"); } }class B extends A { B() { System.out.println("8. B 的构造函数体。"); } { System.out.println("7. B 的实例块。"); } static { System.out.println("4. B 的静态块。"); } }
上面的例子在类中各个部分输出对应的文字,以便从输出中看出其执行顺序。
对应的输出如下:
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。
以上就是关于Java的静态块与实例块。的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4
