代码块(初始化块)
代码块
1、介绍:代码块类似于方法,是类的成员之一。但和方法不同,代码块没有方法名、没有返回类型(void也不能写)、没有参数列表。根据是否被static修饰,可分为静态代码块和非静态代码块。
2、作用:可以理解为,代码块相当于另一种形式的构造器,或者可以说,代码块是对构造器的一种补充,可以实现对Java对象的初始化操作。
3、应用场景:如果多个构造器中都有重复的语句,可以抽取到代码块中,以提高代码的复用性。
4、几点注意事项:
1)类在什么情况下会被加载?
①创建对象实例的时候。
②创建子类对象实例的时候,父类和子类都会被加载。
③使用类的静态属性、静态方法的时候。
2)对于静态代码块,其作用是对类进行初始化,是随着类的加载而执行的,并且只执行一次(因为类只加载一次)。
3)如果只是使用类的静态成员,是不会执行非静态代码块的。
4)构造器的最前面实质上隐藏了 super( ) 和非静态代码块的调用。
5)没有继承关系时,创建一个对象的时候,在一个类中各个成员的调用顺序:
①调用静态代码块,静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
②调用非静态代码块,非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
③调用构造器
6)存在继承关系时,创建一个对象的时候,父类和子类中各个成员的调用顺序:
①调用父类的静态代码块,父类的静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
②调用子类的静态代码块,子类的静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
③调用父类的非静态代码块,父类的非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
④调用父类的构造器
⑤调用子类的非静态代码块,子类的非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)
⑥调用子类的构造器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南