Well, it has to be static because it's the only kind of stuff you can access before creating an actual instances of a class.
( if your class has a "public String toString()" method, you won't be able to reach that method until you got an object/instace of the class of which you can call the toString()
Static stuff can be called without needing an instance )
Imo, a good main method (where good means that your whole program isn't programmed in the main) usually has only 1-2 lines: create an instance from a class. And then call a start() method or something like that of that instance.
Note that the main method can use any class you want. It doesn't have to create the class that's encapsulating it.
I usually create 1 'Test' class, next to the others of my project, which contains the main method. But i never create a 'Test' instance.