El argumento args de main en Java

En esta entrada veremos para qué sirve el parámetro args del método main.
El parámetro args es un array de Strings que debe aparecer obligatoriamente como argumento del método main en un programa Java.
public static void main(String[] args){
    
}
Aunque se le suele dar el nombre args, no es obligatorio que este parámetro se llame así, podemos darle el nombre que queramos. Por ejemplo sería valido un método main escrito así:
public static void main(String[] argumentos){
    
}
Para qué sirve el array String [] args de main?
Trabajando con un entorno de desarrollo a menudo nos olvidamos de que un programa java se puede ejecutar desde la línea de comandos del sistema operativo con la orden:
C:\> java nombrePrograma
Además, mediante esta orden, podemos enviar valores al programa.
Por ejemplo, si tenemos un programa que se llama ordenar que ordena 5 números enteros, pero en lugar de leerlos por teclado los números se le pasan al programa como argumentos, este programa lo ejecutaríamos así: 
C:\> java ordenar 4 6 3 7 1
Los valores que se envían se deben escribir a continuación del nombre del programa y separados por un espacio en blanco.
El array array args que aparece como argumento del método main es el encargado de recoger y almacenar estos valores.  







Como args es un array de Strings contendrá cada uno de estos valores como un String:
Contenido del Arrays args:





La propiedad length del array args (args.length) contiene el número de valores enviados al programa.
Siempre que trabajemos con valores recibidos desde la línea de comandos debemos controlar el número de valores recibidos para evitar que se produzcan errores al procesar el array.
Ejemplo.
Programa llamado saludo que recibe desde la línea de comandos del sistema operativo un nombre de persona y lo muestra por pantalla.
public class saludo{
    public static void main(String[] args) {
        if (args.length > 1) { //si hay más de 1 parámetro
            System.out.println("Hay demasiados parámetros. Debe escribir: saludo nombrePersona");
        } else if (args.length == 0) { //si no hay parámetros      
            System.out.println("Falta el nombre de la persona");                                                  
        } else {
            System.out.println("Buenos Días " + args[0]);
        }
    }
}
Para ejecutarlo se debe escribir en la línea de comandos:
>java saludo nombreCualquiera
Por ejemplo:
> java saludo Juan
La salida del programa sería en este caso:
Buenos Días Juan
Debemos tener en cuenta que todos los valores que se envían a main desde la línea de comandos son de tipo String. Si uno de los parámetros introducido en la línea de comandos es un número, el programa lo tratará como un String, por lo que para tratarlo como número y poder operar matemáticamente con él habrá que hacer la conversión al tipo numérico adecuado.

Ejemplo
El siguiente programa llamado longcir recibe desde la línea de comandos el valor del radio de una circunferencia y calcula y muestra la longitud de la circunferencia.
public class longcir {
    public static void main(String[] args) {
        double radio;
        if (args.length > 1) { //si hay más de 1 parámetro
            System.out.println("Hay demasiados parámetros. Debe escribir: longcir valorRadio");
        } else if (args.length == 0) { //si no hay parámetros      
            System.out.println("Falta el valor del radio");
        } else {
            radio = Double.parseDouble(args[0]); //Se convierte el argumento a double 
            System.out.println("Longitud de la circunferencia: " + 2 * Math.PI * radio);                          
        }
    }
}
Ejemplo
Programa echo que muestra los argumentos introducidos en la línea de comandos.
public class echo {
    public static void main(String[] args) {
        int i;
        for (i = 0; i < args.length; i++) {
            System.out.print(args[i]+ " ");                                                                       
        }
        System.out.println();
    }
}
Enviar valores a main en Netbeans
Si estamos utilizando un IDE podemos ejecutar programas que reciben valores desde la línea de comandos desde el propio IDE sin necesidad de ejecutarlo desde la línea de comandos.
En NetBeans se realiza de la siguiente forma:
Botón derecho sobre el proyecto y seleccionamos Properties.

En la ventana que aparece pulsamos en Run y escribimos los parámetros en Arguments

Estos argumentos serán los que reciba main en el array args cuando ejecutemos el programa.

41 comentarios:

  1. Gracias, muy buena explicación!

    ResponderEliminar
  2. excelente, te mandaste hermano!!! :)

    ResponderEliminar
  3. gracias me fue de mucha ayuda gracias

    ResponderEliminar
  4. Enhorabuena por la explicación, me ayudaste mucho. Gracias

    ResponderEliminar
  5. Muchas gracias Enrique, te dejo un link donde explico un par de detalles mas del método main, pero este post esta excelente!
    saludos!

    http://java-white-box.blogspot.com.ar/2013/05/javaplayer-metodo-main-main-firma-del.html

    ResponderEliminar
  6. Hola está bastante bien el artículo pero no acabas de responder para que se usa?osea se pone por si acaso por consola queremos meter valores por parámetro? es ese el porqué?En fin...

    ResponderEliminar
  7. Muchas gracias! me sacaste de una duda que me molestaba mucho :)!

    ResponderEliminar
  8. Gracias capo! Con este blog se hace innecesario asistir a clases ajajajjaa

    ResponderEliminar
  9. Gracias a todos por seguir el blog ;)

    ResponderEliminar
  10. Necesito pasar como parametros una string de campos de una tabla cualquiera, esa misma tabla y un string de comparación

    Como se puede hacer?

    Saludos

    ResponderEliminar
  11. Muy completo, gracias! Justo lo que necesitaba

    ResponderEliminar
  12. infinitas gracias entendi

    ResponderEliminar
  13. Me fue de mucha ayuda, muchas gracias!

    ResponderEliminar
  14. llevo programando un tiempo y esta es la primera vez que me explican bien lo de args[] en main() xD. gracias

    ResponderEliminar
  15. De pm explicado. Si señó ahora entiendo esa cosa (tan rarita ella)

    ResponderEliminar
  16. por fin mis dudas, han sido resueltas. Muchisimas gracias!!

    ResponderEliminar
  17. soys un capo gracias loco

    ResponderEliminar
  18. Excelente! Mejor explicado no pudo haber sido!

    ResponderEliminar
  19. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  20. me pone que no se ha encontrado o cargado la clase principal

    ResponderEliminar
    Respuestas
    1. Ccuándo ello ocurre debes revisar la versión de Java con la que compilaste, debe ser compatible con la versión de java que tienes instalada, o actualizas el jre o compilas con una versión más antigüa, saludos!.
      Leonardo Baini.

      Eliminar
  21. Hola, muchas gracias por la explicación, siempre tuve esa duda, desde la universidad XDD

    ResponderEliminar
  22. Mil gracias me ayudó mucho, más en la parte de como hacerlo en un IDE como Netbeans.

    ResponderEliminar
  23. Saludos! Me sirvio de mucho la información, los ejemplos me ayudarón mucho y la inforamación sobre el IDE NETBEANS me enseño otra forma de poner los parámetros en el IDE.

    ResponderEliminar
  24. Ta weno, se entiende super facil 👍

    ResponderEliminar
  25. Que buena explicacion, ha sido la mas clara de muchas que he escuchado.

    ResponderEliminar
  26. Yo ya tenía conocimiento sobre scripting en Linux y utilizaba los argumentos para algunos. Al saber que se podía hacer los mismo en java me ha volado la cabeza, además de que no sabia para que servía String[] args.

    ResponderEliminar