初始化块
1.什么是初始化块
初始化块是java类中可出现的第四种成员(成员变量,方法 ,构造器),一个类中可以有多个初始化块
2.初始化块的作用?
从某种程度来看,初始化块是构造器的补充,初始化块总是在构造器执行之前执行。系统通压根可以使用初始化块来进行对象的初始化操作
3.初始化块的执行顺序?
前面定义的初始化块先执行,后面定义的初始化块后执行
4.语法
public class InstanceInit {
//初始化块 对a进行初始化
{
int a=6;
}
int a=9;
public static void main(String []args){
System.out.println(new InstanceInit().a);
}
}
5.初始化块的运行机制
当java创建对象时,系统先为该对象的所有实例对象分配内存(该类已经加载),接着程序开始对这些实例化变量执行初始化,顺序为:先执行初始化块或者声明变量时执行的初始化,再执行构造器中的初始值
6.如何结合初始化块和构造器
7.深入初始化块!!
实际上初始化块是一个假象,使用javac编译java后,该java类的初始化块会消失,初始化块的代码会“还原”到每个构造器中,位于构造器代码的前面
静态初始化块
1.什么是静态初始化块?
如果定义的初始化块使用了static修饰(初始化块也只能使用static修饰),则这个初始化块变成了静态初始化块,也称为类初始化块,同样需要满足static修饰的性质(不能访问实例变量 实例方法)
2.和初始化块的联系
一个是对对象进行初始化 一个是对类进行初始化,语法,性质类似(见上文对于初始化块的性质介绍)
3.语法
public class InstanceInit {
/**
静态初始化块
*/
static{
int a=6;
}
static int a=9;
public static void main(String []args){
System.out.println(new InstanceInit().a);
}
}