第一个例子:
public class StaticDemo {
{
System.out.println("{} 代码块");
}
static{
System.out.println("static 代码块");
}
public static void main(String[] args) {
}
}
static 代码块
结论:类的加载会执行static代码块,不会执行{}代码块。
第二个例子:
public class StaticDemo2 {
{
System.out.println("{} 代码块");
}
static{
System.out.println("static 代码块");
}
public static void main(String[] args) {
new StaticDemo2();
}
}
static 代码块 {} 代码块
结论: new一个类的实例,会先执行static代码块,再执行{}代码块。
第三个例子:
public class StaticDemo3 {
public StaticDemo3(){
System.out.println("构造函数");
}
{
System.out.println("{} 代码块");
}
static{
System.out.println("static 代码块");
}
public static void main(String[] args) {
new StaticDemo3();
}
}
static 代码块 {} 代码块 构造函数
结论:new一个类的实例,会先执行static代码块,再执行{}代码块,最后执行构造函数。
原文:http://www.cnblogs.com/bmbi/p/5087901.html