336 votes

Qu'est-ce que "String args[]" ? paramètre dans la méthode main Java

Je commence tout juste à écrire des programmes en Java. Que signifie le code Java suivant ?

public static void main(String[] args)
  • Qu'est-ce que String[] args ?

  • Quand utiliseriez-vous ces args ?

Le code source et/ou les exemples sont préférés aux explications abstraites

329voto

Daniel Lew Points 39063

En Java args contient les arguments de la ligne de commande comme un tableau de String objets.

En d'autres termes, si vous exécutez votre programme en tant que java MyProgram one two puis args contiendra ["one", "two"] .

Si vous voulez afficher le contenu de args vous pouvez simplement les parcourir en boucle comme ceci...

public class ArgumentExample {
    public static void main(String[] args) {
        for(int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

59 votes

Il convient de noter que args ne doit pas nécessairement être nommé args (vous pouvez lui donner le nom que vous voulez), mais il est préférable de respecter les conventions. Vous pouvez également voir String... args de temps en temps, ce qui est équivalent.

75 votes

L'indexation des args commence à 0. (contrairement au C qui vous donne le nom du programme)

1 votes

@Daniel, Is args sont garantis d'être séparés par un espace quel que soit le système d'exploitation ?

121voto

mR_fr0g Points 3534

Ce sont les arguments de la ligne de commande en Java.

En d'autres termes, si vous exécutez

java MonProgramme un deux

Puis args contient :

[ "un", "deux" ]

public static void main(String [] args) {
    String one = args[0]; //=="one"
    String two = args[1]; //=="two"
}

Il s'agit de configurer votre application pour qu'elle s'exécute d'une manière particulière ou de lui fournir un élément d'information dont elle a besoin.


Si vous êtes novice en Java, je vous recommande vivement de lire le manuel officiel d'Oracle. Tutoriels Java™ .

46voto

mipadi Points 135410

args contient les arguments de ligne de commande transmis au programme Java lors de l'invocation. Par exemple, si j'invoque le programme comme suit :

$ java MyProg -f file.txt

Puis args sera un tableau contenant les chaînes de caractères "-f" et "file.txt" .

0 votes

J'ai d'abord dû compiler mon code avec javac MyProg.java et puis de courir java MyProg -f file.txt . Y a-t-il une raison à cela, car cela n'est mentionné nulle part dans les réponses ?

0 votes

@stanimirsp : Vous devez effectivement compiler le code source Java dans une .class d'abord.

0 votes

@stanimirsp Vous pourriez vérifier stackoverflow.com/questions/5283841/ . Bien que ce ne soit pas pour Java, la compilation en Java partage la plupart des avantages.

11voto

Cuga Points 6286

String [] args est également la façon dont vous déclarez un tableau de chaînes de caractères en Java.

Dans cette signature de méthode, le tableau args sera rempli de valeurs lorsque la méthode sera appelée (comme le montrent les autres exemples ici). Mais comme vous êtes en train d'apprendre, il est bon de comprendre que cette méthode args c'est comme si vous en aviez créé un vous-même dans une méthode, comme dans ce cas :

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
}

7voto

shsteimer Points 8749

Lorsqu'une classe java est exécutée depuis la console, c'est la méthode main qui est appelée. Pour que cela se produise, la définition de cette méthode main doit être

public static void main(String [])

Le fait que ce tableau de chaînes soit appelé args est une convention standard, mais n'est pas strictement nécessaire. Vous rempliriez ce tableau à la ligne de commande lorsque vous invoquez votre programme

java MyClass a b c

Ils sont généralement utilisés pour définir les options de votre programme, par exemple les fichiers dans lesquels écrire ou lire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X