- 非静态代码块
(1)声明:
【修饰符】 class 类名{
{
非静态代码块;
}
}
(2)代码的执行:
1.在每次创建对象的时候都会执行;
2.比构造器先执行 - 实例初始化
(1)<init
>(【形参】){
}
(2)实例初始化的代码包括:
1.为成员变量显示赋值;
2.执行非静态代码块;
3.执行构造器
其中1和2按顺序执行,3一定是最后执行
(3)当创建对象,调用对应的构造器时,其实执行的是对应的实例初始化方法 - 静态代码块
(1)声明
【修饰符】 class 类名{
static{
静态代码块;
}
}
(2)代码的执行:
1.每一个类的静态代码块只执行一次;
2.静态代码块在第一次使用这个类之前执行(类初始化时) - 类初始化
(1)<clinit
>(【形参】){
}
(2)类初始化的代码包括:
1.静态变量的显式赋值
2.静态代码块
其中1和2按顺序执行
虚拟机会保证一个类的方法在多线程环境中被正确加锁和同步,即每一个类在内存中都只有唯一的一个Class对象 - 父子类中实例初始化和类初始化的执行顺序
1.父类类初始化(静态方法不能被重写,不需考虑重写)
2.子类类初始化
3.父类实例初始化(考虑重写)
4.子类实例初始化
Java——静态代码块,实例初始化方法和非静态代码块,类初始化方法
最新推荐文章于 2023-05-04 16:49:06 发布