logo

Método principal de Java ()

main() es el punto de partida para que JVM inicie la ejecución de un programa Java. Sin el método main(), JVM no ejecutará el programa. La sintaxis del método main() es:

Método principal de Java

público: Es un especificador de acceso. Deberíamos usar una palabra clave pública antes del método main() para que JVM pueda identificar el punto de ejecución del programa. Si usamos privado, protegido y predeterminado antes del método main(), no será visible para JVM.

estático: Puedes hacer que un método sea estático usando la palabra clave static. Deberíamos llamar al método main() sin crear un objeto. Los métodos estáticos son los métodos que invocan sin crear los objetos, por lo que no necesitamos ningún objeto para llamar al método main().

vacío: En Java, cada método tiene el tipo de retorno. La palabra clave void reconoce al compilador que el método main() no devuelve ningún valor.

principal(): Es una firma predeterminada que está predefinida en la JVM. La JVM lo llama para ejecutar un programa línea por línea y finalizar la ejecución una vez completado este método. También podemos sobrecargar el método main().

Argumentos de cadena []: El método main() también acepta algunos datos del usuario. Acepta un grupo de cadenas, lo que se denomina matriz de cadenas. Se utiliza para contener los argumentos de la línea de comando en forma de valores de cadena.

 main(String args[]) 

Aquí, agrs[] es el nombre de la matriz y es de tipo String. Significa que puede almacenar un grupo de cadenas. Recuerde, esta matriz también puede almacenar un grupo de números, pero solo en forma de cadena. Los valores pasados ​​al método main() se denominan argumentos. Estos argumentos se almacenan en la matriz args[], por lo que generalmente se usa el nombre args[].

¿Qué sucede si el método main() se escribe sin String args[]?

El programa se compilará, pero no se ejecutará, porque JVM no reconocerá el método main(). Recuerde que JVM siempre busca el método main() con una matriz de tipo cadena como parámetro.

Proceso de ejecución

Primero, JVM ejecuta el bloque estático, luego ejecuta métodos estáticos y luego crea el objeto que necesita el programa. Finalmente, ejecuta los métodos de instancia. JVM ejecuta un bloque estático con la máxima prioridad. Significa que JVM primero va al bloque estático incluso antes de buscar el método main() en el programa.

Ejemplo

 class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } } 

Producción:

 Static block Static method 

Observamos que JVM primero ejecuta el bloque estático, si está presente en el programa. Después de eso busca el método main(). Si no se encuentra el método main(), da error.

Ejemplo

Un programa que no tiene el método main() da un error en tiempo de ejecución.

 class DemoStaticBlock { Static //static block { System.out.println('Static block'); } } 

Producción:

 Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 

Entonces el método main() siempre debe escribirse como:

 public static void main(String args[]) 

Podemos intercambiar público y estático y escribirlo de la siguiente manera:

 static public void main(String args[]) 

También podemos usar un nombre diferente para la matriz de tipo String y escribirlo como:

 static public void main(String[] x) 

Diferentes formas de escribir el método main() son:

 static public void main(String []x) static public void main(String...args) 

Cadena...argumentos: Permite que el método acepte cero o múltiples argumentos. Debe haber exactamente tres puntos entre String y array; de lo contrario, da un error.

Ejemplo

Un programa que no tiene método main(), pero que se compila y ejecuta exitosamente.

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

Producción:

 Java 

Sobrecarga del método main()

También podemos sobrecargar el método main(). Podemos definir cualquier número de métodos main() en la clase, pero la firma del método debe ser diferente.

Ejemplo

 class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } } 

Producción:

bucle for en script de shell
 main method invoked 6