web-dev-qa-db-fra.com

Explication de 'String args []' et static dans 'public static void main (String [] args)'

Comment pouvez-vous expliquer très bien, à un débutant, la signification de String args[] et l'utilisation de static dans l'extrait suivant?

class FirstApp {
    public static void main(String[] args) {
        ...
    }
}
45
Sam

Je voudrais pointer un débutant vers le article du wiki sur la fonction principale , puis le compléter avec ceci.

  • Java commence seulement à exécuter un programme avec la signature spécifique public static void main(String[] args), et on peut penser à une signature comme leur propre nom - c’est ainsi que Java peut faire la différence entre main() de quelqu'un d'autre et le vrai main().

  • String[] args est une collection de Strings, séparés par un espace, que vous pouvez saisir dans le programme du terminal. Plus souvent qu'autrement, le débutant ne va pas utiliser cette variable, mais elle est toujours là au cas où.

32
Makoto

Je romprais

public static void main(String args[])

en pièces détachées:

public

Cela signifie que vous pouvez appeler cette méthode en dehors de la classe dans laquelle vous vous trouvez. Cela est nécessaire car cette méthode est appelée par le système d'exécution Java qui ne se trouve pas dans votre classe actuelle.


static

Lorsque la machine virtuelle Java appelle la méthode main, il n'existe aucun objet pour la classe appelée. Elle doit donc disposer d'une méthode statique pour autoriser l'appel de la classe.


void

Java est un langage indépendant des plates-formes et s'il renvoie une valeur, celle-ci peut signifier différentes choses pour différentes plates-formes. Il existe également d'autres moyens de quitter le programme sur un système multithread. Explication détaillée .


main

C'est juste le nom de la méthode. Ce nom est fixe et appelé par la machine virtuelle Java en tant que point d’entrée pour une application.


String args[]

Ce sont les arguments de type String que votre application Java accepte lorsque vous l'exécutez.

73
Confuse
public static void main(string [] args)

public -ce que le spécificateur d'accès signifie de partout où nous pouvons y accéder; static Le modificateur -access signifie que nous pouvons appeler cette méthode directement en utilisant un nom de classe sans en créer l'objet; void- c'est le type de retour; main- nom de la méthode string [] args - il n'accepte que le type de chaîne de l'argument ... et le stocke dans un tableau de chaînes

14
user3830480
  • public: c'est un spécificateur d'accès qui signifie qu'il sera accessible par voie publique.
  • static: c'est un modificateur d'accès qui signifie que lorsque le programme Java est chargé, il créera automatiquement l'espace en mémoire.
  • void: il s'agit d'un type de retour c'est-à-dire qu'il ne renvoie aucune valeur.
  • main(): c'est une méthode ou un nom de fonction.
  • string args[]: c'est un argument de ligne de commande, c'est un ensemble de variables au format chaîne.
6
Aishwarya Hungund

Si j'expliquais cela à quelqu'un, je dirais que nous y reviendrons plus tard pour le moment. Vous devez savoir que la façon de gérer votre programme consiste à utiliser:

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

En supposant qu'il sache ce qu'est un tableau, je dirais que les arguments sont des tableaux d'arguments et que vous pouvez montrer quelques exemples intéressants.

Ensuite, une fois que vous avez abordé un peu Java/JVM et ces éléments, vous obtiendrez éventuellement des modificateurs qui deviendront également statiques et publics.

Ensuite, vous pourrez passer du temps à parler de la signification de ces IMHO.

Vous pouvez mentionner d'autres éléments "intéressants" tels que varargs que vous pouvez utiliser dans les versions ultérieures de Java.

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

Pour conserver l’attitude de débutant, vous pouvez expliquer que toute la ligne de commande est automatiquement divisée dans un tableau de String (le String[]).

Pour static vous devez expliquer que ce n'est pas un champ comme un autre: il est unique dans la machine virtuelle, même si vous avez mille instances de la classe.

Donc, main est statique, car c’est le seul moyen de le trouver (lié dans sa propre classe) dans un jar.

... après avoir regardé la programmation, et votre travail commence ...

1
cl-r

Je pensais juste que je participerais à celui-ci. Cela a été parfaitement répondu par d'autres cependant.

La déclaration de méthode principale complète doit être:

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

 }

Les arguments sont déclarés finaux car techniquement, ils ne devraient pas être modifiés. Ce sont des paramètres de console donnés par l'utilisateur.

Vous devez généralement spécifier cette exception principale afin que les traces de pile puissent être facilement répercutées sur la console sans qu'il soit nécessaire de faire e.printStackTrace (), etc.

Quant à la syntaxe de tableau. Je le préfère de cette façon. Je suppose que c'est un peu la différence entre le français et l'anglais. En anglais c'est "une voiture noire", en français c'est "une voiture noire". Quel est le nom important, voiture ou noir?

Je n'aime pas ce genre de chose:

String blah[] = {};

Ce qui est important ici, c’est que c’est un tableau de chaînes, il devrait donc être

String[] blah = {};

bla n'est qu'un nom. Je pense personnellement que c’est un peu une erreur de Java que des tableaux peuvent parfois être déclarés de cette manière.

1
Richard

L'utilisation normale de static consiste à accéder directement à la fonction sans créer d'objet. Comme dans Java main, nous n'avons pas pu créer d'objet pour que cette classe appelle la méthode main. Il s'exécutera automatiquement. Si nous voulons exécuter manuellement, nous pouvons appeler en utilisant main () dans la classe et ClassName.main en dehors de la classe.

0
Bathakarai