1 public class Str { 2 3 static { 4 System.out.println("static{1}"); 5 } 6 static { 7 System.out.println("static{2}"); 8 } 9 { 10 System.out.println("{}"); 11 } 12 13 Str() { 14 System.out.println("Str()"); 15 } 16 17 public static void main(String[] args) { 18 new Str(); 19 new Str(); 20 } 21 }
输出结果:
static{1}
static{2}
{}
Str()
{}
Str()
结论:
1. 静态代码块按顺序执行,且执行一次(类加载时执行)
2. 构造代码块,每次new对象时执行,且先于构造函数执行
3. 执行构造函数
理解:
静态代码块为静态,被类所拥有,类加载时执行;构造代码块非静态,被对象所拥有,对象构造时执行。
原文:http://www.cnblogs.com/joshua-aw/p/6011707.html