[静态代码块] 作用是起环境(技术,模块)的搭建时, 作为入口使用。换种说法, 其作用和main方法一样 , 是一个入口.
例子: 数据库配置以及其工具类
因为是工具类,其方法必定均为static. 而在进行数据库相关操作之前, 我们必须配置它 ( 数据库的用户名和密码等参数 ). 这时候有两个方案
- 在各个方法的第一行统一加上 init()方法, 这样在方法被调用时候就会初始化配置
- 静态快 ( 类被加载时候初始化配置 )
效果是等价的.
这里数据库类的搭建,我们可以看成是 [数据库类模块] 的搭建, 其入口就是该 [静态代码块].
而我之所以说 [静态代码块] 是只用于搭建环境(技术,模块)的入口, 是因为其作用于main无差异 , 也就是说每多一个main的话, 就多一种main之间交错的可能性. (就像绳子交错一样). 这一说法 类似于多线程
了防止交错
- 要不就是该 [静态代码块] 影响足够小, 以至于不可能交错. 如果main A影响线太长, 而没封装, 就有可能导致 在main B去操作了 main A的影响物时, 却没触发main A, 导致main A的影响物没有被赋予状态(数据)
- 要不就是 [静态代码块] 的调用处于 [应用生命周期] 的起点.