public class Test implements Serializable { static { System.out.println("Test1"); } public static void main(String[] args) throws Exception { System.out.println("Test1.main().mark1"); Test2.run(); System.out.println("Test1.main().mark2"); new Test(); System.out.println("Test1.main().mark3"); new Test2(); System.out.println("Test1.main().mark4"); } } class Test2 { static { System.out.println("Test2"); } public static void run() { System.out.println("Test2.run()"); } } honk@honk ~/coding/java $ java Test Test1 Test1.main().mark1 Test2 Test2.run() Test1.main().mark2 Test1.main().mark3 Test1.main().mark4