Introducción
El método main
de Java suele ser el primer método que aprendes cuando empiezas a programar en Java porque es el punto de entrada para ejecutar un programa en Java. El método main
puede contener código para ejecutar o llamar a otros métodos, y puede ubicarse en cualquier clase que sea parte de un programa. Los programas más complejos suelen tener una clase que contiene solo el método main
. La clase que contiene el método main
puede tener cualquier nombre, aunque típicamente puedes simplemente llamar a la clase Main
.
En los ejemplos que siguen, la clase que contiene el método main
se llama Test
:
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
En este artículo aprenderás qué significa cada componente del método main
.
Sintaxis del Método Main de Java
La sintaxis del método main
es siempre:
public static void main(String[] args){
// algún código
}
Solo puedes cambiar el nombre del argumento de matriz String
. Por ejemplo, puedes cambiar args
a myStringArgs
. El argumento de matriz String
se puede escribir como String... args
o String args[]
.
público
El modificador de acceso del método main
debe ser público
para que el JRE pueda acceder y ejecutar este método. Si un método no es público, entonces el acceso está restringido. En el siguiente código de ejemplo, el método main
no tiene el modificador de acceso público
:
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
Al compilar y ejecutar el programa, ocurre el siguiente error porque el método main
no es público y el JRE no puede encontrarlo:
- javac Test.java
- java Test
OutputError: Main method not found in class Test, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
estático
Cuando el programa Java se inicia, no hay ningún objeto de la clase presente. El método main
tiene que ser estático
para que la JVM pueda cargar la clase en memoria y llamar al método main
sin crear primero una instancia de la clase. En el siguiente código de ejemplo, el método main
no tiene el modificador estático
:
public class Test {
public void main(String[] args){
System.out.println("Hello, World!");
}
}
Al compilar y ejecutar el programa, ocurre el siguiente error porque el método main
no es estático
:
- javac Test.java
- java Test
OutputError: Main method is not static in class Test, please define the `main` method as:
public static void main(String[] args)
void
Cada método de Java debe proporcionar el tipo de retorno. El tipo de retorno del método Java main
es void
porque no devuelve nada. Cuando el método main
ha terminado de ejecutarse, el programa Java termina, por lo que no es necesario un objeto devuelto. En el siguiente código de ejemplo, el método main
intenta devolver algo cuando el tipo de retorno es void
:
public class Test {
public static void main(String[] args){
return 0;
}
}
Cuando compilas el programa, se produce el siguiente error porque Java no espera un valor de retorno cuando el tipo de retorno es void
:
- javac Test.java
OutputTest.java:5: error: incompatible types: unexpected return value
return 0;
^
1 error
main
El método main
de Java siempre se llama main
. Cuando un programa Java comienza, siempre busca el método main
. El siguiente código de ejemplo muestra un método main
renombrado a myMain
:
public class Test {
public static void myMain(String[] args){
System.out.println("Hello, World!");
}
}
Cuando compiles y ejecutes el programa, se produce el siguiente error porque JRE no puede encontrar el método main
en la clase:
- javac Test.java
- java Test
OutputError: Main method not found in class Test, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
String[] args
El método `main` de Java acepta un solo argumento de tipo array de `String`. Cada cadena en el array es un argumento de línea de comandos. Puedes usar los argumentos de línea de comandos para afectar la operación del programa o para pasar información al programa en tiempo de ejecución. El siguiente código de ejemplo muestra cómo imprimir los argumentos de línea de comandos que ingreses al ejecutar el programa:
public class Test {
public static void main(String[] args){
for(String s : args){
System.out.println(s);
}
}
}
Cuando compiles el programa y luego lo ejecutes con unos cuantos argumentos de línea de comandos separados por espacios, los argumentos se imprimirán en la terminal:
- javac Test.java
- java Test 1 2 3 "Testing the main method"
Output1
2
3
Testing the main method
Conclusión
En este artículo aprendiste sobre cada componente del método `main` de Java. Continúa tu aprendizaje con más tutoriales de Java.