静态构造器 静态变量 谁先初始化?
来源:互联网 发布:遗传算法ga 编辑:程序博客网 时间:2024/06/06 18:39
今天 遇到 需要静态构造器中初始化一个静态常量,但是没研究过初始化顺序,导致初始化失败了,在此做个总结。
尝试的结果是 会先初始化静态变量 在初始化静态构造器
静态成员,可以看做“类”这个特殊对象的属性和方法,但是这样理解不好理解。
我们从静态内存分配,可以换个角度理解这个东西。
静态代码,会在程序初始化时就加载到内存中,并且赋值。
我不认为是这样,JIT是在程序初始化的时候就被加载的代码内存区中,但是并不是所有代码都被加载到了执行栈中,执行栈寻找的是Main方法,程序也是从Main开始入口执行的。而静态代码,是在静态代码所在的类,被加载到了执行栈中的时候,会调用静态构造函数初始化,并且只会执行一次。
也就是说这个静态代码是全局的,这个全局是相对于整个应用来说的。也就是说相当于,静态成员就是真个应用的全局成员,效果类似Application一样。而访问静态成员需要通过类才能点出来,这也没有什么,就相当于是个命名空间,只不过多了一级,内部类不也多一级吗?
一点笔记:2015.7.29
0 0
- 静态构造器 静态变量 谁先初始化?
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 静态变量、静态构造函数、构造函数的初始化时机
- Java中静态变量、块、非静态变量、块和构造器的初始化顺序
- [转] Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- Java初始化顺序,静态变量,static块,实例变量,构造器的初始化顺序
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造方法)
- 静态方法 静态变量初始化
- Java中静态代码块,静态变量,静态方法,构造方法初始化顺序
- 静态变量、静态属性、静态构造函数
- 静态结构变量初始化
- 静态变量的初始化
- 静态容器变量初始化
- 静态变量定义初始化
- 静态变量初始化
- 【状压dp】【bzoj 1087】【SCOI 2005】互不侵犯King
- Nginx + tomcat + memcache (负载均衡+session共存)
- FireFox禁止鼠标拖拽图片
- 奇偶数间隔排序问题
- DecimalFormater、BigDecimal和RoundingMode的使用方法,还有千分符,一次搞定!
- 静态构造器 静态变量 谁先初始化?
- HDU 3033 I love sneakers!(01背包变形)
- 比较全面的 C++ 操作符重载 (operator)
- Python线程指南
- 欢迎使用CSDN-markdown编辑器
- 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层
- 1-1/2+1/3-1/4+.......-1/100
- 【bzoj1875】 SDOI2009 HH去散步 dp+矩阵乘法
- Delphi2010/XE2下隐藏程序系统任务栏的图标