一个简单的例子
1. 所有静态的(无论其是变量还是块)都按顺序执行.
2. 所有的非静态的块都在静态的(无论其是变量还是块)后执行.
3. 所有的块(无论是静态的还是非静态的)都在构造之前执行.
4. 静态块在类被加载到内存后就开始执行
5. 非静态块是在创建对象时,构造之前被调用
- public class TestStaticMode {
- public TestStaticMode() {
- System.out.println("in structure");
- }
- static int i = 0;
- {
- System.out.println("in first no static i=" + i);
- }
- static {
- i = 1;
- System.out.println("in static i=" + i);
- }
- {
- System.out.println("in second no static i=" + i);
- }
- public static void main(String args[]) {
- TestStaticMode testStaticMode = new TestStaticMode();
- System.out.println("i=" + i);
- }
- }
public class TestStaticMode {
public TestStaticMode() {
System.out.println("in structure");
}
static int i = 0;
{
System.out.println("in first no static i=" + i);
}
static {
i = 1;
System.out.println("in static i=" + i);
}
{
System.out.println("in second no static i=" + i);
}
public static void main(String args[]) {
TestStaticMode testStaticMode = new TestStaticMode();
System.out.println("i=" + i);
}
}
输出为:
in static i=1
in first no static i=1
in second no static i=1
in structure
i=1