Java 代码块和类的执行调用顺序

1 什么是代码块

代码块称之为初始化块,属于类中的一部分成员。类似于类中的方法,但和方法不同的是代码块没有方法名没有返回,没有参数,只有用大括号{}括起来的方法体。

2 如何用

[修饰符]{
代码......
};

特别声明:

(1)修饰符可有可无,如果添加的话,只能添加static

(2)使用static修饰的叫静态代码块,没有static修饰的叫普通代码块

(3)块内可写任何逻辑语句,例如输入、输出、方法调用、循环、判断等。

(4)大括号末尾的 可写可不写。

(5)代码块在对象穿件时便会执行,且执行顺序先与构造器。

3 为何有代码块的出现

参考网上的说法:

(1)相当于另外一种形式的构造器,是对构造器的补充机制,可以做一系列的程序初始化操作。

(2)如果多个构造器中都有重复的语句,可以抽取到初始化块中,提高代码的重用性。

我们创建两个类 Dog类,Dog类有两个构造方法,每个构造方法都要求执行输出“我饿了,要吃饭...”的操作,下面我们用代码块的形式实现一下。

运行结果如下:

从结果我们可以看出,虽然代码块在程序中是写在最后面的,但是创建对象执行时是最先执行的。代码块调用的顺序优先于构造器....

4 一个类什么时候会加载?

在继续讲解下面的知识点前,先提示一个非常重要的知识点,即一个类在什么时候会加载,主要有3种情况,如下:

(1)当创建对象实例时(new)。
(2)创建子类对象实例时,父类也会被加载。
(3)使用类的静态属性和静态方法时。

代码演示:

(1)创建对象实例,也就是new一个对象,这个都知道,不再进行演示。

(2)创建子类对象实例,父类也会被加载。

看输出结果:

(3)使用静态属性和静态方法时,类会加载。

输出结果:

注意:此时A类已经被加载了,但是默认会执行静态的代码块,不会执行普通的代码块,我们将代码块的static去掉,在看结果如下:

5 代码块使用注意事项和细节

(1)static代码块即静态代码块,随着类的加载而执行,是对类进行初始化,且只会执行一次,当之后再创建对象时,静态代码块不会再执行。普通代码块每创建一次对象便会执行一次。

(2)普通代码块,在创建对象实例时,会被默认调用,每当创建一次,便会调用一次。如果只是使用类的静态成员时,普通代码块不会被调用执行

6 创建对象类的调用顺序

当创建一个对象时,类默认加载的内容也是有顺序的,我们的印象往往是当new一个对象时,默认会首先加载其构造方法,现实是构造方法的加载顺序级别最低,具体的加载顺序如下:

(1) 静态代码块和静态属性的初始化。静态代码块和静态属性的初始化调用优先级一样,当两者碰在一起时,则按照代码的定义位置顺序执行。
(2)普通代码块和普通属性的初始化。普通代码块和普通属性的初始化的优先级一样,当两者碰在一起时,则按照代码的定义位置顺序执行。
(3)构造方法

实例演示:

首先我们先定义一个Cat实体类,里面包含了静态属性和静态代码块、普通属性和普通代码块、构造方法。

运行main()方法得到的结果如下:

7 含有继承关系时创建对象类的调用顺序

在实际的开发中往往有很多的继承关系,下面我们将介绍如果一个类继承了其他的类,如A extends B。当创建了A对象后,那么他们内部的默认加载顺序又是什么样呢?下面我我们直接说结论,对于过程的演示这里不再进行演示,感兴趣的话可以模仿上面的例子写一下。

加载顺序如下:

(1)父类的静态代码块和静态属性的初始化。
(2)子类的静态代码块和静态属性的初始化。
(3)父类的普通代码块和普通属性的初始化。
(4)父类的构造方法。
(5)子类的普通代码块和普通属性的初始化。
(6)子类的构造方法。

声明:静态代码块只能直接调用静态属性和静态方法;普通代码块可以调用任意成员。

代做工资流水公司芜湖银行流水账办理淄博查询自存流水大连贷款流水代做商丘房贷流水模板宜昌工资流水app截图价格泰州工作收入证明样本柳州办理工资代付流水荆州办车贷银行流水阜阳办工资流水app截图赣州制作贷款工资流水潮州代做流水单济宁入职工资流水样本临沂房贷流水报价绍兴房贷工资流水 公司合肥企业贷流水价格海口开企业对私流水衡阳企业对公流水制作曲靖代做公司银行流水青岛做自存银行流水贵阳办理自存流水咸阳薪资流水单办理柳州代做背调银行流水郑州贷款工资流水 价格扬州签证工资流水打印南通背调流水多少钱唐山企业流水打印报价烟台签证银行流水 样本商丘流水账单费用黄冈打印贷款流水威海制作银行流水PS香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化