Was ist die “String args[]” Parameter in der Hauptmethode?
Lesezeit: 7 Minuten
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.
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
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.
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
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:
public static void main(String[] argument)
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
}
}
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.
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
}
14451100cookie-checkWas ist die “String args[]” Parameter in der Hauptmethode?yes