static intializer block executes when a class is intialized. instance intializer block is executed when a class is instantiated i.e. an object of a class is created. As you must know a class is loaded when the JVM starts. so static intializer block is executed when the JVM starts. But instance intializers execute when an object of a class is created. If no object of a class is created then the instance initializer block will never be executed.