¿Cómo funciona public static void main en un programa Java?

| Última modificación: 29 de noviembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Muchos programadores se desesperan, porque se encuentran con errores que parecen surgir de la nada. El asunto es que, no han entendido por completo cómo funciona el método public static void main en Java y eso sí es bastante grave. Como este método es la base sobre la cual se inicia la ejecución de cualquier programa en Java, no entender su funcionamiento y el propósito de cada palabra en su declaración, implica que la JVM no sabría por donde empezar a ejecutar tu código.

public static void main en Java

¿Qué es public static void main en Java?

Como te estaba diciendo, el método public static void main es el punto de entrada de un programa Java. Esto quiere decir que es donde comienza la ejecución de tu código, y sin él, la máquina virtual de Java (JVM) no puede saber cómo ejecutar tu programa. Cada palabra de su declaración tiene un significado, aquí te los explico:

public

En Java, public es un modificador de acceso. Lo cual quiere decir que el método main será accesible desde cualquier parte del código, incluso fuera de la clase en la que está definido.

Su importancia radica en que la JVM necesita poder acceder al método main desde fuera de la clase donde se encuentra. Entonces, si no fuera público, la JVM no podría encontrarlo, y el programa no se ejecutaría.

Ejemplo:

class Programa {
private static void main(String[] args) {
System.out.println("¡Hola, mundo!");
}
}

Este código generaría un error porque el método main no es público. La JVM no podrá acceder a él si no está marcado como public.

static

El modificador static también es super importante. La palabra static significa que el método pertenece a la clase y no a un objeto de esa clase. Así es como la JVM no crea un objeto de la clase antes de llamar al método main.

Ten presente que el método main se ejecuta sin la necesidad de instanciar la clase, para ahorrar memoria y tiempo de ejecución.

Si intentas definir el método main sin static, obtendrás un error, ya que la JVM no podrá llamarlo sin crear primero un objeto de la clase.

Ejemplo:

class Programa {
public void main(String[] args) {
System.out.println("¡Hola, mundo!");
}
}

Aquí también obtendrías un error, porque el método main no es estático.

void

Void indica que el método no retorna ningún valor. En otras palabras, una vez que el método main termina su ejecución, el programa finaliza, por lo que no tiene sentido que retorne un valor. Esto también ayuda a simplificar el flujo del programa.

Si intentas hacer que el método main devuelva algo, como un número entero, la JVM lanzará un error.

Ejemplo:

class Programa {
public static int main(String[] args) {
System.out.println("¡Hola, mundo!");
return 0;
}
}

Este código genera un error, porque el método main debe ser de tipo void, no int.

main

La palabra main es el nombre del método. Es el identificador que la JVM busca para comenzar la ejecución del programa. No es una palabra clave de Java, pero es obligatorio que el nombre del método sea main.

Si cambias este nombre, la JVM no podrá encontrarlo y el programa no se ejecutará.

Ejemplo:

class Programa {
public static void iniciar(String[] args) {
System.out.println("¡Hola, mundo!");
}
}

Como el nombre del método no es main, la JVM no sabría por dónde comenzar y lanzaría un error.

String[] args

El String[] args es un parámetro de tipo arreglo que almacena los argumentos de la línea de comandos. Los argumentos son valores que puedes pasar al programa cuando lo ejecutas desde la terminal.

Por ejemplo, puedes ejecutar el programa con valores como java Programa 10 20 30, y estos valores estarán disponibles en el arreglo args dentro del método main.

Ejemplo:

class Programa {
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
}
}
}

Cuando ejecutes este código, verás que con los argumentos java Programa uno dos tres, la salida será:

uno
dos
tres

¿Puedes sobrecargar el método main?

Sí, es posible sobrecargar el método main en Java. Así que puedes tener varias versiones del método main en tu clase, siempre que tengan diferentes parámetros. Sin embargo, esto no afecta el punto de entrada del programa; la JVM solo llamará al main que tenga la firma estándar public static void main(String[] args).

Ejemplo de sobrecarga:

class Programa {
public static void main(String[] args) {
System.out.println("¡Programa sin argumentos!");
}

public static void main(int numero) {
System.out.println("¡Número pasado como argumento: " + numero + "!");
}
}

Aunque hemos sobrecargado el método main, la JVM solo ejecutará el primero, con el parámetro String[] args.

Aprender a programar en Java te ayudará a evitar todos estos errores. Conocerás a fondo el método public static void main y tu JVM funcionará correctamente.

En el Bootcamp de Java Full Stack de KeepCoding, tendrás la oportunidad de dominar Java, aprender a desarrollar aplicaciones web y enfrentarte a desafíos reales del mercado laboral. ¡No dejes pasar esta oportunidad para impulsar tu carrera en tecnología!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado