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.
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."
Is that the correct reason?
Because how can object of class be created without entering into main function?
Please give your views on this. If that is not the right reason, then what's the correct reason?
It's just a convention. The Java language designers could have easily decided that you must designate a class to be instantiated, making its constructor the main method. But calling a static method is just as effective and doesn't require a class to be instantiated first.
Also, if the class has a superclass, you could alter the behavior of program startup by changing a superclass (since superclass constructors must be called before subclasses), perhaps unintentionally. Static methods don't have this problem.
The main method is static because it keeps things simpler, but if they wanted to make it more complicated, they could have.