ついでに調べてみた2

public class Test {
	static{
		System.out.println("static");
	}
	{
		System.out.println("init");
	}
	public Test(){
		System.out.println("constructor");
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("== Start ==");
		Test test = new Test();
		Test test2 = new Test();
		Test test3 = new ExtendsTest();
		Test test4 = new ExtendsTest();
		System.out.println("== end ==");
	}
}
class ExtendsTest extends Test{
	static{
		System.out.println("static - ExtendsTest");
	}
	{
		System.out.println("init - ExtendsTest");
	}
	public ExtendsTest(){
		System.out.println("constructor - ExtendsTest");
	}
}


結果

static
== Start ==
init
constructor
init
constructor
static - ExtendsTest
init
constructor
init - ExtendsTest
constructor - ExtendsTest
init
constructor
init - ExtendsTest
constructor - ExtendsTest
== end ==