This simple program describes execution order of different block and methods when a java program runs.
public class WhatHappensInJavaProgram
{
static
{
System.out.println("Static block ");
}
public WhatHappensInJavaProgram()
{
System.out.println("Constructor");
}
public static void testStatic()
{
System.out.println("Static method");
}
public void test()
{
System.out.println("Instance method");
}
public static void main(String args[])
{
System.out.println("Main Method");
testStatic();
WhatHappensInJavaProgram obj =new WhatHappensInJavaProgram();
obj.test();
}
}
In this program , first of all this class WhatHappensInJavaProgram get loaded in JVM and class object is created.While loading the class , the jvm runs its static blocks and initilizes static variables . So the very first line which gets printed will be static block . After this , main method runs. Then if we create new instance , first the memory is allocated in heap , then constructor runs , and then the reference is assigned . After that , instance method runs .
Static block
Main Method
Static method
Constructor
Instance method