public static void main(String[] args) {
new StaticCode();
new StaticCode();
System.out.println("Over");
}
static{System.out.println("C");}
}
这是一个完整的程序,执行结果是:B C A D D over ,为什么是这个结果,谁能帮忙分析下啊?为什么不是 B A D D over C 呢?作者: 贠(yun)靖 时间: 2012-3-31 23:21
class StaticCode{
static{
System.out.println("A");
}
{
System.out.println("D");
}
}
public class StaticCodeDemo {
static{System.out.println("B");}
public static void main(String[] args) {
new StaticCode(); 静态最先加载原理 这个两个对象在该类两个静态运行之后,显然是 b c 然后再加载staticode类中的静态代码
new StaticCode(); 又因为static只加载一次 所以输出 a 而staticode得代码块 是有几个对象就执行几次 所以dd 最后over
System.out.println("Over");
}
static{System.out.println("C");}
} 作者: 肖发腾 时间: 2012-4-1 07:34
楼主,先来看一下static和静态代码块的知识再分析: