代码块

代码块

代码块是什么

代码块就是构造器的补充,又被叫做初始代码块,是类的成员之一,类似于方法,将逻辑语句包起来

但又跟方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不需要通过对象来调用或类显示调用

代码块的书写格式

(修饰符){
    代码
};

注意事项:

  1. 修饰符可以选,但也只能用static
  2. 代码块分为两类,一种是有static的,叫做静态代码块,另一种是没有static的叫做普通代码块
  3. ";"可以加,也可以不加

代码块的作用

  1. 可以做初始化,当构造器中有多个重复的语句,可以抽取到代码块中(我理解的是父类和子类的关系,但并不是)
  2. t提高代码的复用性

静态代码块

静态代码块的作用是对类进行初始化,而且随着类的加载而执行,并且只会执行一次,如果是普通代码块,每创建一个对象就会被执行一次

类什么时候被加载

  1. 创建对象实例的时候
  2. 创建子类实例,父类也会被加载
  3. 调用静态成员的时候

普通代码块在创建对象实例的时候,会被隐式的调用,被创建一次就会调用一次

如果只是使用类的静态成员的时候普通代码块不会被执行

  1. 静态代码块的优先级大于普通代码块

1)、调用静态代码块和静态属性初始化(注意静态代码块和初始化静态属性优先级是一样的,如果有多个静态代码块和静态属性初始化,那么按照他们的定义顺序调用)

2)、 普通代码块,和普通属性初始化的优先级也是也一样的,如果有多个普通代码块和普通属性初始化,那么按照他们的定义顺序调用

3)、构造器中其实隐藏了super()和调用普通代码块,静态代码块在初始化对象就一经实现过了,所以优先级是高于普通的

class A(){
    public A(){
        //隐藏了super()
        //隐藏了调用普通代码块
        system.out.print("ok");
    }
}

创建一个子类对象时的顺序

  1. 先是父类的静态代码块和静态属性初始化被调用
  2. 再是子类的静态代码块被调用,和静态属性初始化优先级一样
  3. 父类的普通代码块被调用,和普通属性初始化
  4. 父类的构造器被调用
  5. 子类的普通代码块被调用和普通的属性初始化
  6. 子类的构造器被调用

静态的代码块只能调用静态成员,普通代码块可以调用任意成员

posted @     阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示