本帖最后由 rslheima 于 2012-7-20 16:07 编辑
首先你要了解类初始化的顺序,之后就可以理解你的程序了。
初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器
详细资料请看http://www.cnblogs.com/jackyrong/archive/2008/08/12/1266161.html
- public class InitialOrderTest {
-
- // 静态变量
- public static String staticField = "静态变量";
- // 变量
- public String field = "变量";
-
- // 静态初始化块
- static {
- System.out.println(staticField);
- System.out.println("静态初始化块");
- }
- // 初始化块
- {
- System.out.println(field);
- System.out.println("初始化块");
- }
- // 构造器
- public InitialOrderTest() {
- System.out.println("构造器");
- }
- public static void main(String[] args) {
- new InitialOrderTest();
- }
- }
运行以上代码,我们会得到如下的输出结果:
//-------------------------------------------所以你的程序运行顺序是1,2,3,4
class StaticCode
{
int num=9;//=========2 变量
StaticCode()
{
System.out.println("b");
}
static
{
System.out.println("a");//=====》1 静态初始化块
}
{
System.out.println("c"+this.num);//======》3 初始化块
}
StaticCode(int x)//=======》4 构造器
{
System.out.println("d");
}
public static void show()
{
System.out.println("show run");
}
}
class StaticCodeDemo
{
public static void main(String[] args)
{
new StaticCode(4);
}
}
|