您的位置:首页 > 其它

理解static与非static部分的实例化

2017-11-26 12:04 169 查看
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 赋值操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  实例化