1. static属性的实例化过程
查看编译文件就会发现,static块会在最开始自动加上static属性值的初始化内容,顺序是按照书写依次执行,再然后是static块本身的内容。
a)先调用父类的static{}
b) static{
static属性值A 赋值操作
static属性值B 赋值操作
static块本身的赋值操作
}
2.非static 属性的实例化过程
查看编译文件会发现,所有的构造器都会在最开始自动加上非static的属性值以及普通块的内容,顺序是先非static属性值依次执行,再然后是普通块的内容,最后是构造器本身的内容。
Constructor(){
super(******)
非static属性值A 赋值操作
非static属性值B 赋值操作
普通块的操作
构造器本身的操作
}
Constructor(String a){
static属性值A 赋值操作
非static属性值A 赋值操作
非static属性值B 赋值操作
普通块的操作
构造器本身的操作
}
3. 以非static属性为例,解释了为什么前一个属性值A在赋值操作的的时候如果引用B则此时B是null。注意:如果B是final的并且是直接赋值,那么A同样可以引用到B被赋值后的值。
static同理。
static属性值A 赋值操作