Incluso aunque OP sólo se está hablando de la String[] args
, quiero dar un ejemplo completo de la public static void main(String[] args)
.
Public
: es un Access Modifier, que define quién puede acceder a este Método. Público significa que este Método será accesible para cualquier Clase (si otras Clases pueden acceder a esta Clase).
Static
: es una palabra clave que identifica lo relacionado con la clase. Esto significa que el Método o variable dado no está relacionado con la instancia sino relacionado con la Clase. Se puede acceder sin crear la instancia de una clase.
Void
: se utiliza para definir el Tipo de devolución del Método. Define lo que el método puede devolver. No válido significa que el Método no devolverá ningún valor.
main
: es el nombre del Método. JVM busca este nombre de Método como punto de partida para una aplicación con una firma particular solamente.
String[] args
: es el parámetro del método principal.
Si observa el código fuente de JDK (jdk-src \ j2se \ src \ share \ bin \ java.c):
/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
Se puede ver que la starting method en Java debe ser nombrado main
y debe tener la firma específica public static void main(String[] args)
El código también nos dice que el public static void main(String[] args)
no es fijo, si cambia el código en (JDK-src \ j2se \ src \ share \ bin \ java.c) a otra firma, que funcionará pero cambiando esto le dará otros posibles problemas debido a la java specs
Offtopic: ha sido 7 años desde que OP hizo esta pregunta, supongo que OP puede responder su propia pregunta por ahora.
A tener en cuenta es que 'args' no necesariamente tiene que ser llamado' args' (puede que el nombre lo que quieras) - aunque es mejor seguir convención. También puede ver 'String ... args' de vez en cuando, lo que es equivalente. – vikingsteve
args indexing start at 0. (al contrario de C que le da el nombre del programa) – AdrieanKhisbe
@Daniel, ¿'args' está garantizado por estar separado por espacio, independientemente del sistema operativo? – Pacerier