java中static修饰符的代码的加载顺序
1:首先加载被final static 修饰的原始数据类型的数据成员(若是其他类型的对象,包括原始数据类型的类包装器,如Integer,也排在第3加载)。
2:其次加载处于static块中的代码块。
3:最后才是加载只被static修饰的数据成员。
测试实例:
package com.liu.person;
import java.util.Random;
public class TestStatic {
public static int a = 10;
public static final String s1 = new String("sss");
public static final String s2 = "aaaaaaa";
public static final int b = new Integer(20);
public static final int c = new Random().nextInt();
public static final int d = 250;
static {
a = 0;
System.out.println("initable InitSquence");
}
public static void main(String[] args) {
System.out.println(TestStatic.s1);
}
}
输出:->initable InitSquence
->sss
如果改成:System.out.println(TestStatic.s2);
则输出:->aaaaaaa
如果改成:System.out.println(TestStatic.b);
则输出:->initable InitSquence
->20
如果改成:System.out.println(TestStatic.a);
则输出:->initable InitSquence
->0
如果改成:System.out.println(TestStatic.d);
则输出:->250