Cuando un miembro de la clase está precedido por público, entonces se puede acceder a ese miembro mediante un código fuera de la clase en la que está declarado.
En este caso, main () debe declararse como público, ya que debe ser llamado por código fuera de su clase cuando se inicia el programa.
La palabra clave static permite llamar a main () sin tener que instanciar una instancia particular de la clase.
Esto es necesario ya que el intérprete de Java llama a main () antes de crear cualquier objeto.
La palabra clave void simplemente le dice al compilador que main () no devuelve un valor.
Como verá, los métodos también pueden devolver valores.
Como se indicó, main () es el método llamado cuando comienza una aplicación Java. Tenga en cuenta que Java distingue entre mayúsculas y minúsculas. Por lo tanto, Main es diferente de main.
Es importante entender que el compilador de Java compilará clases que no contienen un método main (). Pero el intérprete de Java no tiene forma de ejecutar estas clases.
Entonces, si hubiera escrito Main en lugar de main, el compilador aún compilaría su programa. Sin embargo, el intérprete de Java informaría un error porque no podría encontrar el método main ().
Cualquier información que necesite pasar a un método es recibida por variables especificadas dentro del conjunto de paréntesis que sigue al nombre del método. Estas variables se denominan parámetros.
Si no se requieren parámetros para un método dado, aún debe incluir los paréntesis vacíos.
En main (), solo hay un parámetro, aunque complicado. String args [] declara un parámetro llamado args, que es una matriz de instancias de la clase String. Los objetos de tipo String almacenan cadenas de caracteres.
En este caso, args recibe los argumentos de la línea de comandos presentes cuando se ejecuta el programa.
Espero eso ayude,
cualquier ayuda adicional, mándame un mensaje ...