Was ist die “String args[]” Parameter in der Hauptmethode?

Lesezeit: 7 Minuten

Benutzeravatar von freddiefujiwara
freddiefujiwara

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 verwenden args?

Quellcode und/oder Beispiele werden abstrakten Erläuterungen vorgezogen.

Benutzeravatar von Dan Lew
Dan Lew

Auf Java args enthält das mitgelieferte Kommandozeilenargumente als Array von String Objekte.

Mit anderen Worten, wenn Sie Ihr Programm in Ihrem Terminal ausführen als:

C:/ java MyProgram one two

Dann args wird beinhalten ["one", "two"].

Wenn Sie den Inhalt von ausgeben möchten argsSie können sie einfach so durchlaufen …

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

Das Programm druckt im Terminal:

C:/ java MyProgram one two
one
two
    
C:/

  • Bemerkenswert ist das args muss nicht unbedingt genannt werden args (Sie können es benennen, was Sie wollen) – obwohl es am besten ist, der Konvention zu folgen. Sie könnten auch sehen String... args von Zeit zu Zeit, was gleichwertig ist.

    – Wikingersteve

    20. Juni 2013 um 6:40 Uhr

  • args-Indizierung beginnt bei 0. (im Gegensatz zu C, das Ihnen den Namen des Programms gibt)

    – AdriaanKhisbe

    21. März 2014 um 10:48 Uhr

  • @Daniel, ist args unabhängig vom Betriebssystem garantiert durch Leerzeichen getrennt?

    – Schrittmacher

    17. Juni 2014 um 21:08 Uhr


  • @Luke Das kann nicht wahr sein, zumindest nicht auf Unix-Systemen. Dort übergibt die Shell Argumente an das Programm, die bereits gemäß den Shell-Regeln aufgeteilt wurden (mit entsprechend entfernten Anführungszeichen/Escapezeichen). Es gibt für das Programm (in diesem Fall den Java-Interpreter) keine Möglichkeit, auf die ursprüngliche ungeteilte Befehlszeile zuzugreifen, und es sollte dies auch nicht wollen, da dies den Benutzer zutiefst verwirren würde.

    – Regnarg

    12. November 2016 um 14:17 Uhr


  • Wenn sich einige zukünftige Benutzer fragen, wie die Argumente von der empfangen werden main -Methode – zuerst werden die Argumente von den Shell-Regeln an die JVM übergeben. Die meisten Shells werden durch Leerzeichen getrennt. Dann initialisiert die JVM a String[] für Sie, gefüllt mit den Argumenten. Dieses Array wird dann an die übergeben main Methode als Argument.

    – MC Kaiser

    10. Februar 2020 um 22:18 Uhr

Benutzeravatar von mR_fr0g
mR_fr0g

Diese sind für Befehlszeilenargumente in Java.

Mit anderen Worten, wenn Sie laufen

java MyProgram eins zwei

Dann args enthält:

[ “one”, “two” ]

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

Der Grund dafür ist, Ihre Anwendung so zu konfigurieren, dass sie auf eine bestimmte Weise ausgeführt wird, oder ihr einige Informationen bereitzustellen, die sie benötigt.


Wenn Sie neu in Java sind, empfehle ich dringend, die offiziellen Oracles durchzulesen Java™-Tutorials.

Benutzeravatar von mipadi
mipadi

args enthält die Befehlszeilenargumente, die beim Aufruf an das Java-Programm übergeben werden. Wenn ich das Programm zum Beispiel so aufrufe:

$ java MyProg -f file.txt

Dann args wird ein Array sein, das die Zeichenfolgen enthält "-f" Und "file.txt".

  • Ich musste meinen Code erst mit kompilieren javac MyProg.java und dann laufen java MyProg -f file.txt. Gibt es dafür einen Grund, weil es nirgendwo in den Antworten erwähnt wird?

    – stanimirsp

    17. Juni 2020 um 20:24 Uhr

  • @stanimirsp: Sie müssen den Java-Quellcode in a kompilieren .class Datei zuerst.

    – Mipadi

    18. Juni 2020 um 18:15 Uhr

  • @stanimirsp Sie könnten stackoverflow.com/questions/5283841/… überprüfen. Obwohl das nicht für Java gilt, teilt die Kompilierung in Java die meisten Vorteile.

    – Dateiland

    12. September 2020 um 23:29 Uhr

Benutzeravatar von Ajinkya
Ajinkya

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

Was ist String[] args ?

Antwort:

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

args -> ist der Name eines Arrays, es kann alles sein (z. B. a, ar, Argument, Param, Parameter) keine Probleme mit Compiler & ausgeführt & ich habe es auch getestet.

Z.B:

  1. public static void main(String[] argument)

  2. public static void main(String[] parameter)

Wann würden Sie diese Argumente verwenden?

Antwort->

Der main Funktion ist von Entwicklern sehr intelligent gestaltet. Tatsächliches Denken ist sehr tief. Welches im Grunde unter Berücksichtigung von C & C++ basierend auf Kommandozeilenargumenten entwickelt wurde, aber heutzutage niemand mehr verwendet.

1- Der Benutzer kann jeden Datentyp über die Befehlszeile eingeben, kann eine Zahl oder eine Zeichenfolge sein und muss vom Compiler akzeptiert werden. Welchen Datentyp sollten wir verwenden? sehe das Ding 2

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

Z.B: Das folgende Programm ist kompiliert und ausgeführt und ich habe es auch getestet.

Wenn Eingang -> 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(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    

  }
}

Benutzeravatar von Igoranze
Igoranze

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

Public : ist ein Zugriffsmodifikator, die definiert, wer auf diese Methode zugreifen kann. Öffentlich bedeutet, dass jede Klasse auf diese Methode zugreifen kann (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 instanzbezogen, sondern klassenbezogen 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 nur als Ausgangspunkt für eine Anwendung mit einer bestimmten Signatur gesucht.

String[] args : ist der Parameter der Hauptmethode.

Wenn Sie sich den JDK-Quellcode ansehen (jdk-src\j2se\src\share\bin\java.c):

/* Hauptmethode der Anwendung abrufen */ 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;
...

You can see that the starting method in java must be named main and must have the specific signature public static void main(String[] Argumente)

Der Code sagt uns auch, dass die public static void main(String[] args) ist nicht behoben, wenn Sie den Code in (jdk-src\j2se\src\share\bin\java.c) in eine andere Signatur ändern, wird es funktionieren, aber wenn Sie dies ändern, werden Sie andere mögliche Probleme wegen der Java Spezifikationen

Offtopic: Es ist 7 Jahre her, seit OP diese Frage gestellt hat. Ich vermute, dass OP seine Frage inzwischen selbst beantworten kann.

Ich würde mich trennen

public static void main(String args[])

in Teilen.

“öffentlich” bedeutet, dass main() von überall aufgerufen werden kann.

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

“Leere” bedeutet, dass main() keinen Wert zurückgibt

“hauptsächlich” ist der Name einer Funktion. main() ist etwas Besonderes, weil es der Start des Programms ist.

“Schnur[]” bedeutet ein Array von String.

“Argumente” ist der Name des Strings[] (innerhalb des Hauptteils von main()). “args” ist nichts Besonderes; Sie könnten es auch anders nennen und das Programm würde genauso funktionieren.

  • String[] args ist eine Sammlung von Strings, getrennt durch ein Leerzeichen, die in das Programm auf dem Terminal eingegeben werden können. Meistens wird der Anfänger diese Variable nicht verwenden, aber sie ist immer da, nur für den Fall.

Cugas Benutzeravatar
Kuga

String [] args Auf diese Weise deklarieren Sie auch ein Array von Strings in Java.

In dieser Methodensignatur ist das Array args wird beim Aufruf der Methode mit Werten gefüllt (wie die anderen Beispiele hier zeigen). Da Sie jedoch lernen, lohnt es sich, dies zu verstehen args array ist genau so, als ob Sie selbst eines in einer Methode erstellt haben, wie hier:

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
}

1445110cookie-checkWas ist die “String args[]” Parameter in der Hauptmethode?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy