理解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 赋值操作
查看编译文件就会发现,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 赋值操作
相关文章推荐
- 我所理解的实例方法、类方法(@classmethod)和静态方法(@staticmethod)(关键词:实例方法/类方法/@classmethod/静态方法/@staticmethod)
- c语言接口与实现--异常与断言(异常部分)的理解,含实例
- java中如何理解多个对象共享同一个静态成员变量(多个实例的static变量会共享同一块内存区域)
- static在实例Extends、Overload中理解
- static的全面理解(C部分)
- 由类实例对象为static引发对单例模式的深刻理解
- 类的成员函数的理解——类的成员函数有4种类型inline、virtual、static、normal
- sed 实例,第 2 部分
- python yield 实例理解要点
- sed 实例,第 3 部分
- InvalidateRect中的“部分区域”理解
- 通过实例学习 NetBeans 6 的新功能 第 2 部分:Java 桌面应用程序
- 多线程下的函数调用次数统计,帮助理解synchronized和static关键字
- 深入理解JVM—JVM内存模型(很经典) (部分摘自 深入JAVA虚拟机 周志明著)
- 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念
- 深入理解Java的Annotation系列-第三部分 解析注解信息
- WCF三种实例激活的类型——实践理解三种类型的区别
- Spring之乐观锁简单理解和实例
- Android 应用程序分析之Calculator ----核心计算部分的理解和高精度运算
- c语言中关键字 static 的相关理解