The "main" method is not magic. It's an ordinary method just like any other.
However, the JVM has been designed so that the point where execution of Java begins has to be a method in a class. To make it easier to locate that starting point, the JVM looks for a particular method signature. Specifically, a method declared
static, scope
public, returning
void, and having one argument, which is an array of java.lang.String. When it finds it in the class named on the command like (or for "-jar" execution, in the JAR manifest), then the JVM invokes that method and the show begins.
You can define another method with a signature of "public void main()" with no arguments and that is syntactically legal. But the JVM won't use it as a starting method. Not even if you declare it static. For that matter a non-static "public void main(
String [])" won't work eiither. Not only does the signature fail to match, but also at that point there is no object to invoke that method on!
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.