代码块(初始化块)

  代码块

  1、介绍:代码块类似于方法,是类的成员之一。但和方法不同,代码块没有方法名、没有返回类型(void也不能写)、没有参数列表。根据是否被static修饰,可分为静态代码块和非静态代码块。

  2、作用:可以理解为,代码块相当于另一种形式的构造器,或者可以说,代码块是对构造器的一种补充,可以实现对Java对象的初始化操作。

  3、应用场景:如果多个构造器中都有重复的语句,可以抽取到代码块中,以提高代码的复用性。

  4、几点注意事项:

    1)类在什么情况下会被加载?

      ①创建对象实例的时候。

      ②创建子类对象实例的时候,父类和子类都会被加载。

      ③使用类的静态属性、静态方法的时候。

    2)对于静态代码块,其作用是对类进行初始化,是随着类的加载而执行的,并且只执行一次(因为类只加载一次)。

    3)如果只是使用类的静态成员,是不会执行非静态代码块的。

    4)构造器的最前面实质上隐藏了 super( ) 和非静态代码块的调用。

    5)没有继承关系时,创建一个对象的时候,在一个类中各个成员的调用顺序:

      ①调用静态代码块,静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ②调用非静态代码块,非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ③调用构造器

    6)存在继承关系时,创建一个对象的时候,父类和子类中各个成员的调用顺序:

      ①调用父类的静态代码块,父类的静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ②调用子类的静态代码块,子类的静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ③调用父类的非静态代码块,父类的非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ④调用父类的构造器

      ⑤调用子类的非静态代码块,子类的非静态属性初始化。(优先级一样,按照在类中定义的顺序依次执行)

      ⑥调用子类的构造器

 

 

 

 

 

 

 

 

 

 

 

  

  

posted @   已经学到HelloWorld了  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示