2012-08-14 16 views
29

¿Cómo se explica muy bien, a un principiante, el significado de String args[] y el uso de static en el siguiente extracto?Explicación de 'args String []' y estáticas en 'principales (args String []) public static void'

class FirstApp { 
    public static void main(String[] args) { 
     ... 
    } 
} 
+0

Solo se puede ejecutar un 'main()' y los arrays de 'String' son un poco avanzados para el principiante. Solo los he usado en programas un poco más avanzados, que requieren iterar sobre una matriz/colección. – Makoto

+7

¿Cuánto quieres explicar y qué tan principiante son? Cuando comencé Java, mi profesor solo dijo "así es" hasta que comenzamos a crear nuestras propias funciones. Después de eso, explicó para qué es String args []. –

+3

Probablemente debería ser 'String [] args', y no' String args [] 'o su principiante se confundirá para siempre sobre la sintaxis de la matriz. –

Respuesta

27

me gustaría señalar un principiante en el Wiki article on the Main function, luego complementarlo con esto.

  • Java sólo se inicia la ejecución de un programa con el public static void main(String[] args) firma específica, y uno puede pensar en una firma, como su propio nombre - es cómo Java puede decir la diferencia entre alguien más main() y la única verdadera main().

  • String[] args es una colección de String s, separados por un espacio, que se puede escribir en el programa en el terminal. Muchas veces, el principiante no va a usar esta variable, pero siempre está ahí por si acaso.

+0

¿Qué quiere decir con "más veces que no"? –

+1

@Abcd: Puede haber * una ocasión en la que un principiante quiera pasar argumentos de línea de comandos, pero honestamente, esa ocasión no ocurre cada vez que se ejecuta una aplicación. – Makoto

+0

para qué sirve cuando nunca se usa. ¿Por qué colocarlo onl –

-2

cuando se inicia la aplicación de la consola, lo hace su java-jar (nombre de archivo) (args) por lo que si se va a ejecutar un programa que lee de un archivo que haría

Si su El programa se llamaba readFile, después de que hicieras una versión ejecutable (no explicaría cómo hacer esa parte) tienes que lanzar el programa.

java -jar readFile.jar C:/user/Matt/documents/myText.txt 
    ^launch program  ^args 

la ubicación del archivo sería el args [] del programa.

+19

Si yo fuera un principiante, esta explicación podría A) hacerme llorar y B) no explicar "estática" en absoluto –

0

Para mantener la actitud de principiante, puede explicar que toda la línea de comando se divide automáticamente en una matriz fo String (String[]).

Para static tiene que explicar, que no un campo como el otro: es único en la JVM, incluso si tiene miles de instancias de la clase

Así main es estática, porque es la única manera de encontrarlo (vinculado en su propia clase) en un jar.

... después nos fijamos en la codificación, y comenzar su trabajo ...

+0

Exacto, ... pero es para un principiante. ¿Utiliza cargador múltiple de la clase principal? No adivino el Patrón o la utilidad para hacerlo. –

2

Si estuviera explicando esto a alguien que yo diría que vamos a llegar a ella más adelante, por ahora lo que necesita saber que la forma de ejecutar su programa es utilizar:

public static void main(String[] args) { 
     ... 
    } 

Asumiendo él/ella sabe qué es una matriz, yo diría que la args es una matriz de argumentos y puedes mostrar algunos ejemplos geniales.

Luego, después de haber hablado un poco sobre Java/JVM y esas cosas, llegarías a los modificadores eventualmente a estáticos y públicos también.

Luego puede pasar un tiempo hablando sobre el significado de estos en mi humilde opinión.

Podría mencionar otras cosas "interesantes" como varargs que puede usar en versiones posteriores de Java.

public static void main(String ...args) { 
     //... 
    } 
0

el uso normal de estática es para acceder a la función directamente con a cualquier creación de objetos. Igual que en Java principal, no pudimos crear ningún objeto para esa clase que invoque el método principal. Se ejecutará automáticamente. Si queremos ejecutarlo manualmente podemos llamar usando main() dentro de la clase y ClassName.main desde fuera de la clase.

13
public static void main(string [] args) 

public -ITS significa el especificador de acceso desde todas partes podemos acceder a ella; static -modificador de acceso significa que podemos invocar este método directamente utilizando el nombre de clase sin crear un objeto; void - es el tipo de devolución; main - nombre del método string [] args - que sólo aceptan tipo de cadena de tiendas argument..and en una matriz de cadenas

4
  • public: es un especificador de acceso que significa que se puede acceder mediante públicamente.
  • static: es un modificador de acceso que significa que cuando el programa Java se carga, creará automáticamente el espacio en la memoria.
  • void: es un tipo de devolución, es decir, no devuelve ningún valor.
  • main(): es un método o un nombre de función.
  • string args[]: es un argumento de línea de comando es una colección de variables en el formato de cadena.
47

Me gustaría romper

public static void main(String args[]) 

en partes:

public

Esto significa que se puede llamar a este método desde fuera de la clase que se encuentra actualmente en este. es necesario porque este método está siendo llamado por el sistema de tiempo de ejecución Java que no se encuentra en su clase actual.


static

Cuando la JVM hace llamada al método principal no hay ningún objeto existente para la clase de ser llamado por lo tanto, tiene que tener método estático para permitir la invocación de la clase.


void

Java es la plataforma independiente del lenguaje y si volverá algún valor, el valor puede significar diferentes cosas para diferentes plataformas. También hay otras formas de salir del programa en un sistema multiproceso. Detailed explaination.


main

Es sólo el nombre del método. Este nombre es fijo y la JVM lo llama como punto de entrada para una aplicación.


String args[]

Estos son los argumentos de tipo String que la aplicación Java acepta cuando lo ejecuta.

0

Solo pensé en entrar en este. Sin embargo, otros lo han respondido perfectamente.

La declaración completa método principal debe ser:

public static void main(final String[] args) throws Exception { 

} 

Los argumentos se declaran final, ya que técnicamente no deben ser alterados. Son parámetros de consola dados por el usuario.

lo general, debe especificar que los tiros principal excepción para que los seguimientos de pila pueden hicieron eco a la consola fácilmente sin necesidad de hacer e.printStackTrace(), etc.

En cuanto a la sintaxis de los arrays. Lo prefiero de esta manera. Supongo que es un poco como la diferencia entre francés e inglés. En inglés es "un automóvil negro", en francés es "un automóvil negro". ¿Cuál es el nombre importante, automóvil o negro?

que no me gusta este tipo de cosas:

String blah[] = {}; 

Lo importante aquí es que es una matriz de cadenas, por lo que debe ser

String[] blah = {}; 

bla es sólo un nombre. Personalmente creo que es un error en Java que las matrices a veces se puedan declarar de esa manera.

+0

Bien ... La declaración de la forma: 'String blah [] = {};' se incluyó en las versiones posteriores de Java para ayudar a los programadores procedentes de fondos C y C++ . – Vikas

Cuestiones relacionadas