Una aplicación Java puede aceptar cualquier número de argumentos de la línea de comandos. Esto permite al usuario especificar información de configuración cuando se lanza la aplicación.
El usuario introduce los argumentos de la línea de comandos cuando invoca la aplicación y los especifica después del nombre de la clase que se va a ejecutar. Por ejemplo, supongamos que una aplicación Java llamada Sort
ordena las líneas de un archivo. Para ordenar los datos de un archivo llamado friends.txt
, un usuario introduciría:
java Sort friends.txt
Cuando se lanza una aplicación, el sistema de tiempo de ejecución pasa los argumentos de la línea de comandos al método principal de la aplicación a través de una matriz de String
s. En el ejemplo anterior, los argumentos de la línea de comandos se pasan a la aplicación Sort
en un array que contiene un único String
"friends.txt"
.
Estado de los argumentos de la línea de comandos
El ejemplo
muestra cada uno de sus argumentos de la línea de comandos en una línea por sí mismo:Echo
public class Echo { public static void main (String args) { for (String s: args) { System.out.println(s); } }}
El siguiente ejemplo muestra cómo un usuario podría ejecutar Echo
. La entrada del usuario está en cursiva.
java Echo Drink Hot JavaDrinkHotJava
Nota que la aplicación muestra cada palabra Drink
Hot
, y Java
en una línea por sí misma. Esto se debe a que el carácter de espacio separa los argumentos de la línea de comandos. Para que Drink
Hot
, y Java
se interpreten como un único argumento, el usuario deberá unirlos encerrándolos entre comillas.
java Echo "Drink Hot Java"Drink Hot Java
Parificación de argumentos numéricos en la línea de comandos
Si una aplicación necesita admitir un argumento numérico en la línea de comandos, debe convertir un argumento String
que represente un número, como «34», en un valor numérico. Aquí hay un fragmento de código que convierte un argumento de línea de comandos en un int
:
int firstArg;if (args.length > 0) { try { firstArg = Integer.parseInt(args); } catch (NumberFormatException e) { System.err.println("Argument" + args + " must be an integer."); System.exit(1); }}
parseInt
lanza un NumberFormatException
si el formato de args
no es válido. Todas las clases Number
Integer
Float
Double
, y así sucesivamente tienen parseXXX
métodos que convierten un String
que representa un número en un objeto de su tipo.