代码块 / 初始化块

修饰符 {
    方法体;  
};

1、修饰符可选,且只能选择 static

2、分号可以省略

3、属于类中成员,类似于方法,将逻辑语句封装在方法体内

4、与方法不同,无方法名、返回值、参数,只有方法

5、不需要通过对象、类进行显式调用,而是加载类时或创建对象时进行隐式调用

6、相当于另外一种形式的构造器,是构造器的补充机制,可以进行初始化操作

7、应用场景:多个构造器存在重复语句,抽象到初始化块中,提高代码复用性

 

普通代码块

1、无 static

2、每创建一个对象,就执行

3、创建对象时被隐式调用,每创建一个对象,就调用一次

4、可调用任意成员

5、位置

(1)类中,为构造代码块

(2)方法中,为普通代码块

6、编译器会将普通代码块,嵌入到每个构造器中,嵌入位置在 super() 和构造器代码之间

 

静态代码块

1、有 static

2、对类初始化,随类的加载而执行,且只执行一次

3、只能调用静态成员,不会执行普通代码块

 

类加载时机

1、创建类的对象

2、访问类的静态成员

3、子类初始化,父类也会加载;先加载父类,后加载子类

4、反射

 

类加载顺序

1、外部类

(1)外部类初次加载,会初始化静态变量、静态代码块、静态方法,但不会加载内部类

(2)实例化外部类、调用外部类的静态方法、静态变量,则外部类必须先进行加载,但只加载一次

(3)直接调用静态内部类时,外部类不会加载

2、内部类

(1)在初次调用的时候加载,且只加载一次

(2)延时加载的,只会在第一次使用时加载,不使用就不加载

 

创建对象时,初始化顺序

1、父类静态代码块、静态属性

2、子类静态代码块、静态属性

3、父类普通代码块、普通属性

4、父类构造器

5、子类普通代码块、普通属性

6、子类构造器

posted @   半条咸鱼  阅读(44)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示