run - java get parameters from main
¿Qué es "Argings de cadena[]"? parámetro en el método principal de Java (13)
Creo que está bastante bien cubierto por las respuestas anteriores que String args[]
es simplemente una serie de argumentos de cadena que puede pasar a su aplicación cuando la ejecute. Para completar, podría agregar que también es válido definir el parámetro del método pasado al método main
como un argumento variable (varargs) de tipo String:
public static void main (String... args)
En otras palabras, el método main
debe aceptar una matriz String ( String args[]
) o varargs ( String... args
) como un argumento de método. Y tampoco hay magia con el nombre args
. También puede escribir arguments
o incluso freddiefujiwara
como se muestra en la siguiente página: e.gs .:
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
Estoy empezando a escribir programas en Java. ¿Qué significa el siguiente código de Java?
public static void main(String[] args)
¿Qué es
String[] args
?¿Cuándo
args
estosargs
?
El código fuente y / o los ejemplos son preferibles a las explicaciones abstractas.
Cuando se ejecuta una clase Java desde la consola, el método principal es lo que se llama. Para que esto suceda, la definición de este método principal debe ser
public static void main(String [])
El hecho de que esta matriz de cadenas se llame args es una convención estándar, pero no es estrictamente necesario. Debería rellenar esta matriz en la línea de comandos cuando invoque su programa
java MyClass a b c
Estos se utilizan comúnmente para definir las opciones de su programa, por ejemplo, archivos para escribir o leer.
Cuando termine su código, lo convertirá en un archivo con la extensión .java, que puede ejecutarse haciendo doble clic en él, pero también en una consola (terminal en un mac, cmd.exe en windows) que le permite al usuario hacer muchas cosas. Una cosa es que pueden ver los mensajes de la consola (System.out.print o System.out.println) que no pueden ver si hacen doble clic. Otra cosa que pueden hacer es especificar parámetros, por lo que normalmente usarías la línea
java -jar MyCode.jar
despues de navegar a la carpeta del programa con
cd C:My/Code/Location
en las ventanas o
cd My/Code/Location
en Mac (observe que Mac es menos torpe) para ejecutar el código, pero para especificar los parámetros que usaría
java -jar MyCode.jar parameter1 parameter2
Estos parámetros almacenados en la matriz args, que puede usar en su programa, le permiten al usuario controlar parámetros especiales, como qué archivo usar o cuánta memoria puede tener el programa. Si desea saber cómo usar una matriz, probablemente pueda encontrar un tema en este sitio o simplemente buscarlo en Google. Tenga en cuenta que se puede utilizar cualquier número de parámetros.
En Java, args
contiene los argumentos de línea de comando provistos como una matriz de objetos String
.
En otras palabras, si ejecuta su programa como java MyProgram one two
, args
contendrá ["one", "two"]
.
Si deseaba generar el contenido de args
, puede recorrerlos de esta manera ...
public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
Esos son para argumentos de línea de comando en Java.
En otras palabras, si corres
java MyProgram uno dos
Entonces args
contiene:
[ "uno dos" ]
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
La razón de esto es configurar su aplicación para que se ejecute de una manera particular o proporcionarle la información que necesita.
Si eres nuevo en Java, te recomiendo que leas los tutoriales oficiales de Java TM de Oracle.
Incluso aunque OP solo está hablando de los String[] args
, quiero dar un ejemplo completo del public static void main(String[] args)
.
Public
: es un modificador de acceso , que define quién puede acceder a este método. Público significa que este Método será accesible por cualquier Clase (si otras Clases pueden acceder a esta Clase).
Static
: es una palabra clave que identifica lo relacionado con la clase. Esto significa que el Método o la variable dada no está relacionado con la instancia sino con la Clase. Se puede acceder sin crear la instancia de una Clase.
Void
: se utiliza para definir el tipo de retorno del método. Define lo que el método puede devolver. Vacío significa que el Método no devolverá ningún valor.
main
: es el nombre del Método. JVM busca este nombre de Método como punto de partida para una aplicación con una firma en particular solamente.
String[] args
: es el parámetro del método principal.
Si observa el código fuente de JDK (jdk-src / j2se / src / share / bin / java.c):
/* Get the application''s main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
Puede ver que el método de inicio en java debe llamarse main
y debe tener la firma public static void main(String[] args)
específica public static void main(String[] args)
El código también nos dice que el public static void main(String[] args)
no es fijo, si cambia el código en (jdk-src / j2se / src / share / bin / java.c) a otra firma, lo hará funciona, pero cambiar esto te dará otros problemas posibles debido a las specs java
Offtopic: Han pasado 7 años desde que OP hizo esta pregunta, supongo que OP ya puede responder a su propia pregunta.
La siguiente respuesta se basa mi comprensión y algunas pruebas.
¿Qué es String [] args?
Ans->
String [] -> Como sabemos, esta es una matriz String simple.
args -> es el nombre de una matriz que puede ser cualquier cosa (por ejemplo, a, ar, argumento, parámetro, parámetro) sin problemas con el compilador y ejecutado y también lo probé.
P.ej
1) main public void static (String [] argumento)
2) public static void main (String [] parámetro)
¿Cuándo usarías estos argumentos?
Ans->
La función principal está diseñada muy inteligentemente por los desarrolladores. El pensamiento real es muy profundo. Básicamente se desarrolla bajo la consideración de C & C ++ basado en el argumento de la línea de comando, pero hoy en día nadie lo usa más.
Cosa 1- El usuario puede ingresar cualquier tipo de datos desde la línea de comando. Puede ser Número o Cadena y es necesario para que el compilador lo acepte. ¿Qué tipo de datos debemos usar? ver la cosa 2
Thing 2- String es el tipo de datos que admite todos los tipos de datos primitivos como int, long, float, double, byte, shot, char en Java. Puede analizarlo fácilmente en cualquier tipo de datos primitivo.
Por ejemplo, el siguiente programa es compilado y ejecutado y también lo probé.
Si la entrada es -> 1 1
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] parameter)
{
System.out.println(parameter[0] + parameter[1]); // Output is 11
//Comment out below code in case of String
System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0
System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2
System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0
}
}
Se prefiere el estilo dataType[] arrayRefVar
. El estilo dataType arrayRefVar[]
proviene del lenguaje C / C ++ y se adoptó en Java para dar cabida a los programadores de C / C ++.
Yo rompería
public static void main(String args[])
en partes.
"público" significa que main () se puede llamar desde cualquier lugar.
"estático" significa que main () no pertenece a un objeto específico
"void" significa que main () no devuelve ningún valor
"principal" es el nombre de una función. main () es especial porque es el inicio del programa.
"Cadena []" significa una matriz de Cadena.
"args" es el nombre de la cadena [] (dentro del cuerpo de main ()). "args" no es especial; Podrías nombrarlo de otra manera y el programa funcionaría igual.
-
String[] args
es una colección de Strings, separadas por un espacio, que se pueden escribir en el programa en el terminal. Más de las veces, el principiante no va a usar esta variable, pero siempre está ahí por si acaso.
en public static void main (String args []) args es una matriz de argumento de línea de consola cuyo tipo de datos es String. en esta matriz, puede almacenar varios argumentos de cadena invocándolos en la línea de comando como se muestra a continuación: java myProgram Shaan Royal, entonces Shaan y Royal se almacenarán en la matriz como arg [0] = "Shaan"; arg [1] = "Royal"; puede hacerlo manualmente también dentro del programa, cuando no los llame a la línea de comandos.
String [] args
también es la forma de declarar una matriz de cadenas en Java.
En esta firma del método, los args
la matriz se rellenarán con valores cuando se llame al método (como se muestra en los otros ejemplos). Sin embargo, como está aprendiendo, vale la pena comprender que esta matriz de args
es como si usted mismo creara uno en un método, como en este:
public void foo() {
String [] args = new String[2];
args[0] = "hello";
args[1] = "every";
System.out.println("Output: " + args[0] + args[1]);
// etc... the usage of ''args'' here and in the main method is identical
}
args
contiene los argumentos de la línea de comandos que se pasan al programa de Java tras la invocación. Por ejemplo, si invoco el programa así:
$ java MyProg -f file.txt
Entonces args
será una matriz que contiene las cadenas "-f"
y "file.txt"
.
Explicación en lenguaje simple laico.
El método principal espera que proporcionemos algunos argumentos cuando dirigimos nuestra JVM al nombre de la clase. Eso significa que suponga que su nombre de archivo es Try.java, ahora, para ejecutar esto en el símbolo del sistema, debe escribir "javac Try.java" para compilar seguido de "java Try" para ejecutar. Ahora suponga que en lugar de escribir simplemente "java Try" escribe "java Try 1". Aquí ha pasado un argumento "1". Esto lo tomará su método principal, incluso si no lo usa en su código.
Si desea comprobar si su método principal ha tomado el argumento "1" o no. Simplemente, dentro de su método principal escriba lo siguiente:
for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}