静态代码块:即在类中的标有static修饰符的代码块,如: 

 
  1. static
  2.    //代码 

与一般代码块的异同: 

        相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值。 
        不同点:静态代码块在非静态代码块之前执行。静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。非静态代码块可在普通方法中定义;而静态代码块不行。 
与静态方法的却别: 
    静态代码块在第一次初始化的时候被执行,静态方法在类加载的时候被加载,且必须需要主动调用才会执行。 
执行顺序相关: 
1、单个类的初始化顺序如下:为静态属性分配内存并赋值->执行静态代码块->为非静态属性分配内存并赋值->执行非静态代码块->构造函数。 
2、有继承关系的类的初始化顺序如下:父静属->父静块->子静属->子静块->父非静属->父非静块->父构造->子非静属->子非静块->子构造。 
static的一些使用注意事项: 
1、静态方法只能调用同类中的其他静态成员(静态方法或是静态变量)。 
2、静态方法不能使用this和super。因为静态方法不属于任何实例。 
3、静态变量属于整个类,在类的方法中不能定义静态方法。

转自