Qu’est-ce que “Ssortingng args “? paramètre dans la méthode principale Java

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

public static void main(Ssortingng[] args) 

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

En Java, args contient les arguments de ligne de commande fournis sous la forme d’un tableau d’objects Ssortingng .

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

Si vous voulez afficher le contenu des args , vous pouvez simplement les parcourir comme ceci …

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

Ceux-ci sont pour les arguments de ligne de commande en Java.

En d’autres termes, si vous courez

java MyProgram un deux

Alors args contient:

[ “un deux” ]

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

La raison en est que vous devez configurer votre application pour exécuter une méthode particulière ou lui fournir des informations dont elle a besoin.


Si vous découvrez Java, je vous recommande fortement de lire les didacticiels Java officiels Oracle.

args contient les arguments de ligne de commande transmis au programme Java lors de l’appel. Par exemple, si j’appelle le programme comme ceci:

 $ java MyProg -f file.txt 

Ensuite, args sera un tableau contenant les chaînes "-f" et "file.txt" .

La réponse suivante est basée sur ma compréhension et certains tests.

Qu’est-ce que Ssortingng [] args?

Ans->

Ssortingng [] -> As Nous soaps qu’il s’agit d’un tableau Ssortingng simple.

args -> est le nom d’un tableau, il peut s’agir de n’importe quel élément (par exemple, a, ar, argument, param, paramètre), aucun problème avec le compilateur et exécuté, et j’ai également testé.

Par exemple
1) main statique principale vide (argument Ssortingng [])

2) principal statique vide public (paramètre Ssortingng [])

Quand utiliseriez-vous ces arguments?

Ans->

La fonction principale est conçue très intelligemment par les développeurs. La pensée réelle est très profonde. Qui est essentiellement développé en tenant compte de C & C ++ basé sur l’argument de ligne de commande, mais de nos jours personne ne l’utilise plus.

Thing 1 – L’ utilisateur peut entrer n’importe quel type de données à partir de la ligne de commande peut être Number ou Ssortingng et nécessaire pour l’accepter par le compilateur quel type de données nous devrions avoir à utiliser? voir la chose 2

Thing 2- Ssortingng est le type de données qui prend en charge tous les types de données primitifs tels que int, long, float, double, byte, shot, char en Java. Vous pouvez facilement l’parsingr dans n’importe quel type de données primitif.

Par exemple, le programme suivant est compilé et exécuté et j’ai également testé.

Si l’entrée est -> 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(Ssortingng[] parameter) { System.out.println(parameter[0] + parameter[1]); // Output is 11 //Comment out below code in case of Ssortingng 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 } } 

Ssortingng [] args est également comment vous déclarez un tableau de chaînes en Java.

Dans cette signature de méthode, les args du tableau seront remplis avec des valeurs lorsque la méthode est appelée (comme le montrent les autres exemples). Comme vous apprenez cependant, il est utile de comprendre que ce tableau d’ args est comme si vous en créiez un vous-même dans une méthode, comme ceci:

 public void foo() { Ssortingng [] args = new Ssortingng[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 } 

Je me séparerais

 public static void main(Ssortingng args[]) 

en parties

“public” signifie que main () peut être appelé de n’importe où.

“statique” signifie que main () n’appartient pas à un object spécifique

“void” signifie que main () ne renvoie aucune valeur

“main” est le nom d’une fonction. main () est spécial car c’est le début du programme.

“Ssortingng []” signifie un tableau de Ssortingng.

“args” est le nom de la chaîne [] (dans le corps de main ()). “args” n’est pas spécial; vous pourriez le nommer autrement et le programme fonctionnerait de la même façon.

  • Ssortingng[] args est une collection de chaînes, séparées par un espace, qui peut être saisie dans le programme sur le terminal. Plus souvent qu’autrement, le débutant ne va pas utiliser cette variable, mais elle est toujours là juste au cas où.

Lorsque vous avez terminé votre code, vous le transformez en un fichier avec l’extension .java, qui peut être exécuté en double-cliquant dessus, mais également dans une console (terminal sur un mac, cmd.exe sur Windows) qui permet à l’utilisateur de le faire. plusieurs choses. Une chose est qu’ils peuvent voir les messages de la console (System.out.print ou System.out.println) qu’ils ne peuvent pas voir s’ils cliquent deux fois. Une autre chose qu’ils peuvent faire est de spécifier des parameters, donc normalement vous utiliseriez la ligne

 java -jar MyCode.jar 

après avoir navigué dans le dossier du programme avec

 cd C:My/Code/Location 

sur les fenêtres ou

 cd My/Code/Location 

sur Mac (notez que mac est moins maladroit) pour exécuter du code, mais pour spécifier les parameters que vous utiliseriez

 java -jar MyCode.jar parameter1 parameter2 

Ces parameters stockés dans le tableau args, que vous pouvez utiliser dans votre programme, vous permettent d’autoriser l’utilisateur à contrôler des parameters spéciaux tels que le fichier à utiliser ou la quantité de mémoire disponible pour le programme. Si vous voulez savoir comment utiliser un tableau, vous pourriez probablement trouver un sujet sur ce site ou simplement le parcourir. Notez que n’importe quel nombre de parameters peut être utilisé.

Lorsqu’une classe Java est exécutée à partir de la console, la méthode principale est ce qui est appelé. Pour que cela se produise, la définition de cette méthode principale doit être

 public static void main(Ssortingng []) 

Le fait que ce tableau de chaînes soit appelé args est une convention standard, mais pas ssortingctement requirejse. Vous devez remplir ce tableau à la ligne de commande lorsque vous invoquez votre programme

 java MyClass abc 

Celles-ci sont couramment utilisées pour définir les options de votre programme, par exemple les fichiers à écrire ou à lire.

Dans public static void main (Ssortingng args []) args est un tableau d’argument de ligne de console dont le type de données est Ssortingng. Dans ce tableau, vous pouvez stocker divers arguments de chaîne en les invoquant sur la ligne de commande, comme indiqué ci-dessous: java myProgram Shaan Royal, Shaan et Royal seront stockés dans le tableau comme arg [0] = “Shaan”; arg [1] = “royal”; vous pouvez le faire manuellement également dans le programme, lorsque vous ne les appelez pas sur la ligne de commande.

Je pense que c’est assez bien couvert par les réponses ci-dessus que Ssortingng args[] est simplement un tableau d’arguments de chaîne que vous pouvez transmettre à votre application lorsque vous l’exécutez. Pour compléter, je pourrais append qu’il est également valide de définir le paramètre de méthode passé à la méthode main tant qu’argument de variable (varargs) de type Ssortingng:

public static void main (Ssortingng... args)

En d’autres termes, la méthode main doit accepter soit un tableau Ssortingng ( Ssortingng args[] ) ou varargs ( Ssortingng... args ) comme argument de méthode. Et il n’y a pas de magie avec le nom args non plus. Vous pourriez aussi bien écrire des arguments ou même freddiefujiwara comme indiqué ci-dessous par exemple:

public static void main (Ssortingng[] arguments)

public static void main (Ssortingng[] freddiefujiwara)

Même si OP ne parle que des arguments Ssortingng[] args , je veux donner un exemple complet de la public static void main(Ssortingng[] args) .

Public : est un modificateur d’access qui définit qui peut accéder à cette méthode. Public signifie que cette méthode sera accessible à toute classe (si d’autres classes peuvent accéder à cette classe).

Static : est un mot-clé qui identifie la chose liée à la classe. Cela signifie que la méthode ou la variable donnée n’est pas liée à l’instance mais liée à la classe. On peut y accéder sans créer l’instance d’une classe.

Void : permet de définir le type de retour de la méthode. Il définit ce que la méthode peut retourner. Vide signifie que la méthode ne renverra aucune valeur.

main : est le nom de la méthode. Ce nom de méthode est recherché par JVM en tant que sharepoint départ pour une application avec une signature particulière uniquement.

Ssortingng[] args : est le paramètre de la méthode principale.

Si vous examinez le code source JDK (jdk-src \ j2se \ src \ share \ bin \ java.c):

 /* Get the application's main method */ mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/Ssortingng;)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; ... 

Vous pouvez voir que la méthode de démarrage dans Java doit être nommée main et doit avoir la signature public static void main(Ssortingng[] args)

Le code nous indique également que le public static void main(Ssortingng[] args) n’est pas corrigé, si vous modifiez le code dans (jdk-src \ j2se \ src \ share \ bin \ java.c) à une autre signature, il sera travailler mais changer cela vous donnera d’autres problèmes possibles à cause des spécifications java

Offtopic: Cela fait 7 ans que OP a posé cette question, je suppose que OP peut maintenant répondre à sa propre question.

Explication en langage simple du profane.

La méthode principale attend de nous que nous fournissions des arguments lorsque nous dirigeons notre JVM vers le nom de la classe. Cela signifie, supposons que votre nom de fichier est Try.java, maintenant pour exécuter cette invite de commande, vous écrivez “javac Try.java” à comstackr suivi de “java Try” à exécuter. Supposons maintenant qu’au lieu d’écrire simplement “java try”, vous écrivez “java try 1”. Ici vous avez passé un argument “1”. Cela sera pris par votre méthode principale même si vous ne l’utilisez pas dans votre code.

Si vous voulez vérifier si votre méthode principale a réellement pris l’argument “1” ou non. Simplement, dans votre méthode principale, tapez ce qui suit:

 for(int i = 0; i < args.length; i++) { System.out.println("Argument is: "+args[i]); } 

Le style dataType[] arrayRefVar est préféré. Le style dataType arrayRefVar[] provient du langage C / C ++ et a été adopté en Java pour prendre en charge les programmeurs C / C ++.

Vous pouvez inclure des arguments dans votre programme en utilisant la plupart des IDE modernes

Par exemple, dans Intellij, vous pouvez inclure des arguments en procédant comme suit:
Exécuter -> Modifier les configurations … -> onglet Configuration -> Arguments du programme

entrer la description de l'image ici

Vous pouvez voir ici la plus commune à séparer par des espaces et si un nom contient des espaces, vous pouvez utiliser des guillemets pour les envelopper.

 public static void main(Ssortingng[] args) { for(Ssortingng arg: args) { System.out.println("arg " + arg); } } 

Cet extrait imprimera:

argument d’argument1
argument d’argument2
nom d’argument arg 3