Java: Método main
Es posible que te sorprendas, pero a lo largo de todas las lecciones anteriores, hemos estado creando nuestro propio método. El esqueleto del método ya estaba escrito de antemano, y se te pedía que añadieras su cuerpo. La práctica se veía así:
public class App {
public static void main(String[] args) {
// BEGIN
// Aquí escribías tu código
// END
}
}
¿Por qué creamos un método? Java está diseñado de tal manera que no se puede ejecutar código fuera de los métodos. No puedes simplemente escribir código a nivel de archivo y ejecutarlo. El compilador mostrará un error:
// El archivo con este código no se compila
System.out.println("Aunque parezca mentira");
Pero este código funcionará:
public class App {
public static void main(String[] args) {
System.out.println("Aunque parezca mentira");
}
}
En tu trabajo, a menudo verás ejemplos fuera de los métodos. ¿Por qué hacemos esto? Únicamente por conveniencia.
Si envolvemos cada línea de código en una clase y un método, el volumen de ruido y material aumentará significativamente. Siempre ten esto en cuenta, ya que los creadores de estos materiales asumen que entiendes cómo funciona Java.
Si ves código que se ejecuta sin métodos, siempre añade la envoltura como se muestra arriba. Así podrás ejecutar fácilmente ese código, por ejemplo, localmente.
Método main
¿Por qué el método en nuestros ejemplos se llama main
? Podríamos haber escrito un ejemplo como este:
public class App {
// run - el nombre se elige arbitrariamente
// el nombre puede ser cualquier cosa que el autor del código quiera
public static void run() {
// aquí hay algún código
}
}
Podríamos haberlo hecho así, y todo funcionaría, pero hay un detalle. En esta forma, el método main
, tal como lo definimos, tiene un significado especial para Java.
Java lo llama automáticamente cuando se ejecuta el programa desde la consola:
# El archivo App contiene una clase llamada App
java App.java # compila y ejecuta
# Dentro se ejecutará el método App.main, si está definido
Otros métodos no se llaman automáticamente. Es por eso que siempre usamos main
, ya que así puedes fácilmente llevar el código del entrenador a tu editor y ejecutarlo.
¿Es obligatorio definirlo? No, Java no impone ninguna restricción sobre qué métodos y cuántos métodos defines en una clase. Tampoco hay restricciones sobre la cantidad y los nombres de las clases.
Para simplificar, siempre usamos el nombre App
, pero en el código real encontrarás miles de nombres y clases diferentes. Aunque con la condición de que en un archivo haya exactamente una clase:
class MySuperClassName {
public static void oneMethod() {
}
public static void twoMethod() {
}
public static void threeMethod() {
}
}
Hablaremos de esto en el curso de POO en Java.
Lo más importante que debes recordar ahora es que cualquier método estático se llama usando un punto después del nombre de la clase, y las llamadas en sí se realizan dentro de otros métodos:
// Solo un ejemplo de llamadas de métodos entre sí
class MySuperClassName {
public static void oneMethod() {
MySuperClassName.twoMethod();
}
public static void twoMethod() {
MySuperClassName.threeMethod();
}
public static void threeMethod() {
}
}
Tarea
Implementa una clase llamada App
con dos métodos:
- El método
gogo()
, que imprime en la pantalla la cadenaIt works!
- El método
main()
, como se define arriba, que llama al métodogogo()
El resultado de llamar a main()
en este caso será:
// => "It works!"
¿El ejercicio no pasa la prueba, qué debo hacer? 😶
Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.
Mi código funciona en mi entorno, pero no aquí 🤨
Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.
Mi código es diferente a la solución del profesor 🤔
Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.
En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.
Leí la lección, pero no entendí nada 🙄
Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.
Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.