I have heard some people saying " if main is not static then JVM could create an object of class containing main and call that main through object.
This is not true. At least, this is nowhere specified in the JLS.
But the problem is how JVM knows which constructor to call in case of overloaded constructors or even if there is only one paramaterized constructor, then what to pass."
If it were true, I'd just expect it to invoke the (implicit) default no-arg constructor.
See also: