代码块
代码块
代码块是什么
代码块就是构造器的补充,又被叫做初始代码块,是类的成员之一,类似于方法,将逻辑语句包起来
但又跟方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不需要通过对象来调用或类显示调用
代码块的书写格式
(修饰符){
代码
};
注意事项:
- 修饰符可以选,但也只能用static
- 代码块分为两类,一种是有static的,叫做静态代码块,另一种是没有static的叫做普通代码块
- ";"可以加,也可以不加
代码块的作用
- 可以做初始化,当构造器中有多个重复的语句,可以抽取到代码块中(我理解的是父类和子类的关系,但并不是)
- t提高代码的复用性
静态代码块
静态代码块的作用是对类进行初始化,而且随着类的加载而执行,并且只会执行一次,如果是普通代码块,每创建一个对象就会被执行一次
类什么时候被加载
- 创建对象实例的时候
- 创建子类实例,父类也会被加载
- 调用静态成员的时候
普通代码块在创建对象实例的时候,会被隐式的调用,被创建一次就会调用一次
如果只是使用类的静态成员的时候普通代码块不会被执行
- 静态代码块的优先级大于普通代码块
1)、调用静态代码块和静态属性初始化(注意静态代码块和初始化静态属性优先级是一样的,如果有多个静态代码块和静态属性初始化,那么按照他们的定义顺序调用)
2)、 普通代码块,和普通属性初始化的优先级也是也一样的,如果有多个普通代码块和普通属性初始化,那么按照他们的定义顺序调用
3)、构造器中其实隐藏了super()和调用普通代码块,静态代码块在初始化对象就一经实现过了,所以优先级是高于普通的
class A(){
public A(){
//隐藏了super()
//隐藏了调用普通代码块
system.out.print("ok");
}
}
创建一个子类对象时的顺序
- 先是父类的静态代码块和静态属性初始化被调用
- 再是子类的静态代码块被调用,和静态属性初始化优先级一样
- 父类的普通代码块被调用,和普通属性初始化
- 父类的构造器被调用
- 子类的普通代码块被调用和普通的属性初始化
- 子类的构造器被调用
静态的代码块只能调用静态成员,普通代码块可以调用任意成员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器