静态构造器 静态变量 谁先初始化?

今天 遇到 需要静态构造器中初始化一个静态常量,但是没研究过初始化顺序,导致初始化失败了,在此做个总结。


尝试的结果是 会先初始化静态变量 在初始化静态构造器


静态成员,可以看做“类”这个特殊对象的属性和方法,但是这样理解不好理解。
我们从静态内存分配,可以换个角度理解这个东西。


静态代码,会在程序初始化时就加载到内存中,并且赋值。

我不认为是这样,JIT是在程序初始化的时候就被加载的代码内存区中,但是并不是所有代码都被加载到了执行栈中,执行栈寻找的是Main方法,程序也是从Main开始入口执行的。而静态代码,是在静态代码所在的类,被加载到了执行栈中的时候,会调用静态构造函数初始化,并且只会执行一次。


也就是说这个静态代码是全局的,这个全局是相对于整个应用来说的。也就是说相当于,静态成员就是真个应用的全局成员,效果类似Application一样。而访问静态成员需要通过类才能点出来,这也没有什么,就相当于是个命名空间,只不过多了一级,内部类不也多一级吗?

一点笔记:2015.7.29

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是不会选择做一个普通人的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值