Java静态代码块和非静态代码块

  • 内容
  • 评论
  • 相关

1. 静态代码块:

static { }

2. 非静态代码块

{ }

静态代码块和非静态代码块的异同点如下:
  • 相同点:都是JVM加载类时且在构造函数执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值。
  • 不同点:静态代码块在非静态代码块之前执行(静态代码块 > 非静态代码块)。静态代码块只在第一次new时执行一次,之后不再执行。而非静态代码块每new一次就执行一次。

Example:

public class Test {

    static{
        System.out.println("Static");
    }

    {
        System.out.println("Non-static block");
    }

    public static void main(String[] args) {
        Test t = new Test();
        Test t2 = new Test();
    }
}
This prints:
Static
Non-static block
Non-static block