※ 引述《gn00618777 (非常念旧)》之铭言:
: 类别(class)中可以有static 程式区块,static 程式区块在类别第一次被加载后只会
: 被执行一次,此区块在类别变量初始化之前执行。
: 书上只浅浅的一行带过...
: 所以...类别是会被加载之后再载出,重复加载的意思囉?
: 还有这 static block 的使用时机是啥阿? 谢谢。
这边主要有两个概念
Classloader和Initializing Fields
Classloader
java Classloader是Java运行时环境的一部分,
负责动态加载Java类到Java虚拟机的内存空间中。
类通常是按需加载,即第一次使用该类时才加载。
(引自维基百科)
为了空间效能等等,通常是需要时才加载
不必要时也可能载出
所以是会有重复载出加载的情形
static block
static block主要是用来当Initializing Field使用
也就是初始化使用static member使用
而使用时机可能是
1.需要加载共用资源
2.下载.读取一些共用资料
参考资料:
http://en.wikipedia.org/wiki/Java_Classloader
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html