代码块:
{
执行语句;
}
(1) 当出现在局部位置时, 为局部代码块.
局部位置: 如语句块中, 函数中, 构造代码块中, 静态代码块中等.
(2) 当出现在成员位置且不被static修饰时, 为构造代码块.
(3) 当出现在成员位置且被static修饰时, 为静态代码块

  1. 局部代码块
    可用于定义局部变量的生命周期.
    也即通过局部代码块可以控制局部变量的生命周期.
    变量的生命周期{}

    "变量的作用域: 声明变量的一对{}之间"这句话对于局部代码块来说, 
    声明在局部代码块中的变量, 其声明周期仅限于该局部代码块. // 局部代码块中的局部变量
  2. 构造代码块/instance initializer
    构造代码块用于完成所有实例的初始化工作.
    每创建一个该类的实例对象, 便顺序执行一次该类的所有构造代码块.
    构造代码块在对象的生命周期内肯定执行且只执行一次.

    一个类可以有多个构造代码块, 各构造代码块按照声明的先后顺序执行.
    
    "变量的作用域: 声明变量的一对{}之间"这句话对于构造代码块来说, 
    声明在构造代码块中的变量, 其声明周期仅限于该构造代码块. // 构造代码块中的局部变量
  3. 静态代码块/ static initializer
    静态代码块用于完成类的初始化工作.
    当且仅当类加载时执行. 在类的生命周期内只执行一次.

    一个类可以有多个静态代码块, 各静态代码块按照声明的先后顺序执行.
    
    "变量的作用域: 声明变量的一对{}之间"这句话对于静态代码块来说, 
    声明在静态代码块中的变量, 其声明周期仅限于该静态代码块. // 静态代码块中的局部变量

    变量的作用域: 声明变量的一对{}之间.
    具体情况如下:
    声明在语句块中的变量, 其作用域为该语句块; // 局部变量
    声明在函数中的变量, 其作用域为该函数; // 局部变量
    声明在构造代码块中的变量, 其作用域为该构造代码块; // 局部变量
    声明在静态代码块中的变量, 其作用域为该构造代码块; // 局部变量
    声明在局部代码块中的变量, 其作用域为该局部代码块; // 局部变量
    (局部代码块可以出现在语句块中, 函数中, 构造代码块中, 静态代码块中)
    声明在类成员位置上的变量, 其作用域为整个类. // 成员变量