代码块
代码块==匿名的方法
静态代码块:static{} 该类第一次使用时自动执行一次
实例代码块:{}每次实例化对象时,在调用构造方法前,自动执行
执行过程
static修饰的成员在jvm第一次使用该类时就会被加载到内存中。
静态部分:类被第一次使用时,先加载静态成员变量的定义,再按照书写顺序由上至下执行;l如静态代码块内的代码和静态成员变量定义时的初始化赋值过程。
实例部分:对象每次被实例化时,先加载实例成员变量的定义,再按照书写顺序由上至下执往/如实例代码块内的代码和实例成员变量定义时的初始化赋值过程。
成员变量与代码块的定义位置关系
如:代码块A中使用成员变量B时
A在B后时,在A内B视为已定义变量,对B可赋值和其他操作;即按照书写顺序由上至下执行。
A在B前时,在A内B视为未定义变量,对B仅可赋值,不可其他操作;因为本质上该变量还未被定义。PS:在书写代码时,避免麻烦,强烈建议先定义再使用
静态/实例--应用场景:
普通业务功能实现时,建议使用实例成员。
成员可多次在多位置被使用,且与调用的对象无关时,可用静态成员。如:工具类中方法Collections.sort(list);