wake-up-neo.com

Was ist "String args []"? Parameter in der Hauptmethode Java

Ich fange gerade an, Programme in Java zu schreiben. Was bedeutet der folgende Java-Code?

public static void main(String[] args)
  • Was ist String[] args

  • Wann würden Sie diese args verwenden?

Quellcode und/oder Beispiele werden abstrakten Erklärungen vorgezogen

266
freddiefujiwara

In Java enthält args die angegebenen Befehlszeilenargumente als Array von String-Objekten.

Wenn Sie Ihr Programm also als Java MyProgram one two ausführen, enthält args["one", "two"].

Wenn Sie den Inhalt von args ausgeben möchten, können Sie diesen wie folgt durchlaufen ...

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

Dies sind Befehlszeilenargumente in Java.

Mit anderen Worten, wenn du rennst

Java MyProgram eins zwei

Dann enthält args:

[ "eins zwei" ]

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

Der Grund dafür ist, dass Sie Ihre Anwendung so konfigurieren, dass sie auf eine bestimmte Weise ausgeführt wird, oder ihr die erforderlichen Informationen zur Verfügung stellen.


Wenn Sie mit Java noch nicht vertraut sind, empfehle ich Ihnen dringend, das offizielle Java von Oracle zu lesenTM Tutorials .

95
mR_fr0g

args enthält die Befehlszeilenargumente, die beim Aufruf an das Java-Programm übergeben werden. Zum Beispiel, wenn ich das Programm wie folgt aufrufe:

$ Java MyProg -f file.txt

Dann ist args ein Array, das die Zeichenfolgen "-f" und "file.txt" enthält.

36
mipadi

Die folgende Antwort basiert auf meinem Verständnis und einigen Tests.

Was ist String [] Args?

Ans->

String [] -> Wie wir wissen ist dies ein einfaches String-Array.

args -> ist der Name eines Arrays, es kann alles sein (z. B. ein ar, ein Argument, ein Parameter, ein Parameter). Es gibt keine Probleme mit dem Compiler und ausgeführten & ich habe es auch getestet.

Z.B.
1) public static void main (String [] -Argument)

2) public static void main (Parameter String [])

Wann würdest du diese Argumente verwenden?

Ans->

Die Hauptfunktion wird von den Entwicklern sehr intelligent entworfen. Tatsächliches Denken ist sehr tief . Was im Wesentlichen unter Berücksichtigung von C & C++ basierend auf Befehlszeilenargumenten entwickelt wurde, wird heutzutage von niemandem mehr verwendet. 

Sache 1- Der Benutzer kann einen beliebigen Datentyp von der Befehlszeile aus eingeben. Kann Number oder String sein und muss vom Compiler akzeptiert werden. Welchen Datentyp müssen wir verwenden? siehe die Sache 2

Thing 2- String ist der Datentyp, der alle primitiven Datentypen wie int, long, float, double, byte, shot und char in Java unterstützt. Sie können es problemlos in jedem primitiven Datentyp analysieren.

E.g Das folgende Programm wird kompiliert, ausgeführt und auch getestet.

Wenn die Eingabe -> 1 1 ist 

// 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    

  }
}
13
Ajinkya

String [] args deklariert auch ein Array von Strings in Java. 

In dieser Methodensignatur wird das Array args beim Aufruf der Methode mit Werten gefüllt (wie die anderen Beispiele hier zeigen). Da Sie jedoch lernen, ist es sinnvoll zu verstehen, dass dieses args-Array genau so ist, als würden Sie selbst eines in einer Methode erstellen.

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
}
12
Cuga

Ich würde Schluss machen

public static void main(String args[])

in Teilen.

"public" bedeutet, dass main () von überall aufgerufen werden kann.

"statisch" bedeutet, dass main () nicht zu einem bestimmten Objekt gehört

"void" bedeutet, dass main () keinen Wert zurückgibt

"main" ist der Name einer Funktion. main () ist etwas Besonderes, weil es der Start des Programms ist.

"String []" bezeichnet ein Array von String.

"args" ist der Name des Strings [] (innerhalb des Hauptteils von main ()). "args" ist nicht besonders; Man könnte es auch etwas anderes nennen und das Programm würde gleich funktionieren.

  • String[] args ist eine Sammlung von Strings, getrennt durch ein Leerzeichen, das in das Programm auf dem Terminal eingegeben werden kann. Meistens verwendet der Anfänger diese Variable nicht, aber sie ist immer für alle Fälle da.
11
Jaimin Patel

Wenn Sie den Code fertiggestellt haben, wandeln Sie ihn in eine Datei mit der Erweiterung .Java um, die durch Doppelklick ausgeführt werden kann, aber auch in einer Konsole (Terminal auf einem Mac, cmd.exe unter Windows), mit der der Benutzer das tun kann viele Dinge. Eine Sache ist, dass sie Konsolenmeldungen (System.out.print oder System.out.println) sehen können, die sie nicht sehen können, wenn sie doppelt klicken. Sie können auch Parameter angeben. Normalerweise würden Sie die Zeile verwenden 

Java -jar MyCode.jar

nach dem Navigieren zum Ordner des Programms mit 

cd C:My/Code/Location

an Fenstern oder

cd My/Code/Location

auf Mac (beachten Sie, dass Mac weniger unhandlich ist), um Code auszuführen, aber um die Parameter anzugeben, die Sie verwenden würden

Java -jar MyCode.jar parameter1 parameter2

Diese im args-Array gespeicherten Parameter, die Sie in Ihrem Programm verwenden können, sollen dem Benutzer ermöglichen, bestimmte Parameter wie die zu verwendende Datei oder den für das Programm verfügbaren Speicherplatz zu steuern. Wenn Sie wissen möchten, wie ein Array verwendet wird, finden Sie möglicherweise ein Thema auf dieser Website oder gehen Sie einfach auf Google. Beachten Sie, dass eine beliebige Anzahl von Parametern verwendet werden kann.

8
Zac

Auch wenn das OP nur über den String[] args spricht, möchte ich ein vollständiges Beispiel für die public static void main(String[] args) geben. 

Public: ist ein Access Modifier , der definiert, wer auf diese Methode zugreifen kann. Öffentlich bedeutet, dass diese Methode für jede Klasse verfügbar ist (wenn andere Klassen auf diese Klasse zugreifen können.).

Static: ist ein Schlüsselwort, das die klassenbezogene Sache identifiziert. Dies bedeutet, dass die angegebene Methode oder Variable nicht auf eine Instanz, sondern auf eine Klasse bezogen ist. Es kann darauf zugegriffen werden, ohne die Instanz einer Klasse zu erstellen.

Void: wird verwendet, um den Rückgabetyp der Methode zu definieren. Es definiert, was die Methode zurückgeben kann. Void bedeutet, dass die Methode keinen Wert zurückgibt.

main: ist der Name der Methode. Dieser Methodenname wird von JVM als Ausgangspunkt für eine Anwendung nur mit einer bestimmten Signatur gesucht.

String[] args: ist der Parameter für die Hauptmethode.

Wenn Sie sich den JDK-Quellcode ansehen (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;
...

Sie können sehen, dass die Starting-Methode in Java main heißen muss und die spezifische Signatur public static void main(String[] args) haben muss.

Der Code sagt uns auch, dass die public static void main(String[] args) nicht festgelegt ist. Wenn Sie den Code in (jdk-src\j2se\src\share\bin\Java.c) in eine andere Signatur ändern, wird er funktionieren, aber eine Änderung dieser Option gibt Ihnen andere Möglichkeiten Probleme wegen der Java Spezifikationen

Offtopic: OP hat diese Frage bereits seit 7 Jahren gestellt. Ich vermute, dass OP seine eigene Frage inzwischen beantworten kann.

8
Igoranze

Ich denke, dass die obigen Antworten ziemlich gut verdeutlichen, dass String args[] Einfach ein Array von Zeichenfolgenargumenten ist, die Sie bei der Ausführung an Ihre Anwendung übergeben können. Zum Abschluss möchte ich hinzufügen, dass es auch gültig ist, den an die Methode main übergebenen Methodenparameter als variables Argument (varargs) vom Typ String zu definieren:

public static void main (String... args)

Mit anderen Worten, die Methode main muss entweder ein String-Array (String args[]) Oder varargs (String... args) Als Methodenargument akzeptieren. Und es gibt auch keine Magie mit dem Namen args. Sie können auch arguments oder sogar freddiefujiwara schreiben, wie in den folgenden Abschnitten gezeigt:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

7
sedeh

Wenn eine Java-Klasse von der Konsole aus ausgeführt wird, wird die Hauptmethode so genannt. Damit dies geschehen kann, muss die Definition dieser Hauptmethode erfolgen

public static void main(String [])

Die Tatsache, dass dieses String-Array als args bezeichnet wird, ist eine Standardkonvention, die jedoch nicht unbedingt erforderlich ist. Sie würden dieses Array in der Befehlszeile ausfüllen, wenn Sie Ihr Programm aufrufen

Java MyClass a b c

Diese werden häufig zum Definieren von Optionen Ihres Programms verwendet, z. B. Dateien, in die geschrieben oder gelesen werden soll.

6
shsteimer

Erklärung in einfacher Laiensprache.

Die Hauptmethode erwartet von uns einige Argumente, wenn wir unsere JVM auf den Klassennamen richten. Angenommen, Ihr Dateiname lautet Try.Java. Um dies nun im Befehl auszuführen, müssen Sie "javac Try.Java" zum Kompilieren eingeben, gefolgt von "Java Try". Angenommen, Sie schreiben statt "Java Try" einfach "Java Try 1". Hier haben Sie ein Argument "1" übergeben. Dies wird von Ihrer Hauptmethode übernommen, auch wenn Sie sie nicht in Ihrem Code verwenden.

Wenn Sie prüfen möchten, ob Ihre Hauptmethode tatsächlich das Argument "1" angenommen hat oder nicht. Geben Sie einfach in Ihrer Hauptmethode Folgendes ein:

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

in public static void main (String args []) args ist ein Array mit Konsolenzeilenargumenten, deren Datentyp String . ist. In diesem Array können Sie verschiedene String-Argumente durch Aufrufen speichern Sie werden in der Befehlszeile wie folgt angezeigt: Java myProgram Shaan Royal dann werden Shaan und Royal als arg [0] = "Shaan"; arg im Array gespeichert [1] = "Royal"; Sie können dies auch manuell innerhalb des Programms tun, wenn Sie sie nicht über die Befehlszeile aufrufen. 

6
Shaan Royal

Der Stil dataType[] arrayRefVar wird bevorzugt. Der Stil dataType arrayRefVar[] stammt aus der C/C++ - Sprache und wurde in Java zur Aufnahme von C/C++ - Programmierern übernommen.

3
Gerald

Zusätzlich zu allen vorherigen Kommentaren.

public static void main(String[] args) 

kann als geschrieben werden 

 public static void main(String...arg)

oder

 public static void main(String...strings)
0
Rahul Anand