Main gets called first when your program is run and when you goto create a new C object that's when the default constructor would be called but since you don't have a constructor it just prints out the line of code for the C class.

Liberty has never come from the government.
Liberty has always come from the subjects of government.
The history of liberty is the history of resistance.
The history of liberty is a history of the limitation of governmental power, not the increase of it.

Main gets called first when your program is run and when you goto create a new C object that's when the default constructor would be called but since you don't have a constructor it just prints out the line of code for the C class.

True. But I think it's better if we can pointed him with the complete scenario. I mean with the default constructor an all, as I post in the above post.

Fine now go through on xcallmejudasxs' post. As he explain the main method is the entry point to the code/application. In Java main method return type is void, means nothing is return to the OS. If you look at a language like C/C++ you can see that the declaration is something like this.

Java Code:

int _tmain(int argc, _TCHAR* argv[])
{
}

Return and int to the OS, error code.

Then in the main method a text line is printed, as you know println() do that. Then create a new object for the class C, with the default constructor in sense. Since no default constructor explicitly define the empty code block,

Java Code:

{
System.out.println("Initializer");
}

is executed. There is no order to specify this code block, as you can define any other method or a constructor.

On the other hand if you have define any other constructor with different signature, you end-up with a compilation error about that default constructor is not define. So you have to change the above code segment as follows.

There are also static initialization blocks that are executed just after a class is loaded.

Yes, actually static blocks are executed before start to execute main as well. And also you can define many number of blocks within a class. If multiple blocks are found then they are executing in specified order. Just look at the following code segment, run it and see.