Wozu nutzt man in der Main Methode das args Array?

Nacer5

Mitglied
Ich habe verstanden das man das Array von args über den Aufruf in der Konsole Parameter übergeben kann. Aber zum Verständnis, wann macht man das?
 

sascha-sphw

Top Contributor
Ein sehr weit verbreiteter Use-Case, ist das in Windows bekannte "Öffnen mit" einer Datei mit einem bestimmten Programm. Hier wird der Pfad zur Datei die geöffnet werden soll als Parameter in diesem Array dem Programm übergeben.
 

LimDul

Top Contributor
Als Beispiel, eine Jar Datei startet man mit
Java:
java -jar meinProgramm.jar

Wenn die Java.exe jetzt auch als Java Programm geschrieben wäre, dann sehe beim Start das args-Array wie folgt aus:

Code:
args[0] = "-jar"
args[1] = "meinProgramm.jar"

Und dann könnte das Programm daraus ableiten, dass es die Jar Datei meinProgramm.jar laden und starten soll.
 

httpdigest

Top Contributor
Ein anderer Use-Case sind eben CLI (Command-Line-Interface) Programme:
Du willst, dass das Programm eine bestimmte Funktionalität ausführt und rufst es nicht per GUI auf, sondern eben per Kommandozeile.
Hier brauchst du dir nur _jedes_ Linux Kommandozeilen Tool anschauen (ls, cp, mv, zip, tar, more, less, ...). Alle diese Tools bekommen Kommandozeilenargumente, um z.B. Pfade zu Dateien anzugeben, auf denen sie arbeiten sollen. Solche Tools kannst du ja theoretisch auch per Java bauen (gut, musst sie halt mit `java -jar tool.jar <cmd-args>` aufrufen).
 

Nacer5

Mitglied
Ok, das klingt logisch. Mich hatte verwirrt, das hier in meinem Beispiel die Argumente "erstesArgument" "2.0" und "drittesArgumente" übergeben wurden. Aber das mit dem Öffnen von Dateien macht sicherlich Sinn. Danke!
 

httpdigest

Top Contributor
Ja, da hat Java so ein bisschen verschlafen, was Usability/Simplicity für CLI Tools angeht. Da ist die Welt bei C und mittlerweile vermehrt bei Go angelangt. Und aktuell habe ich der JVM Plattform auch ein bisschen den Rücken gekehrt im aktuellen Projekt und mich in Go/Golang eingearbeitet. Was für ein cooler Shit das ist. Ebenfalls mächtige Standard-Library, keine Magie (vergl Java: Spring/Spring Boot, Definieren von Klassen zur Laufzeit), ebenfalls Garbage Collector, kein JIT, aber viiiieeel geringerer Speicherverbrauch. Da ist ein Go-Microservice mit REST Interface und Datenbankanbindung und liegt bei ca. 10 MB RSS und seine noch-Java/JVM-Kollegen sind da mit weit über 700MB RSS dabei. Aber das nur am Rande. :)
 

Neumi5694

Top Contributor
Das args-Array ist auch inkonsistent zu System.exit, welches das return int der main-Methode einspart.

Besser wäre wahrscheinlich ein String[] System.getArgs() gewesen.

System.exit(0) spart nicht den return-Wert der Main-Methode ein. Der Befehl kann nämlich von überall im Programm aus aufgerufen werden. Würde nur die Main-Methode einen Rückgabewert haben, müsste man auch immer wieder dorthin zurückkehren, bevor das Programm geschlossen wird und das passiert eben nicht. Der Befehl hat mit der Main-Methode nichts zu tun.
 

Barista

Top Contributor
System.exit(0) spart nicht den return-Wert der Main-Methode ein.


Das args-Array ist auch inkonsistent zu System.exit, welches das return int der main-Methode einspart.
Das args-Array ist auch inkonsistent zu System.exit, welches das return int der main-Funktion in C einspart.



What should main() return in C and C++? The return value for main is used to indicate how the program exited. If the program execution was normal, a 0 return value is used. Abnormal termination(errors, invalid inputs, segmentation faults, etc.) is usually terminated by a non-zero return.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
W Stackabarbeitung - Wozu dient das "True" ? Java Basics - Anfänger-Themen 1
R Wozu sind Annotations da? Java Basics - Anfänger-Themen 3
H abstract - Wozu? Java Basics - Anfänger-Themen 6
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
V OOP Wozu Objekt erstellen? Java Basics - Anfänger-Themen 2
G Wozu ist die Methode offsetByCodePoints(int, int) beim StringBuilder sinnvoll? Java Basics - Anfänger-Themen 1
G wozu dient getContentPane()? Java Basics - Anfänger-Themen 1
M Wozu Upcasting? Am Beispiel List = ArrayList Java Basics - Anfänger-Themen 2
P Wozu brauche ich (this.)? Java Basics - Anfänger-Themen 3
F Wozu braucht man array list? Java Basics - Anfänger-Themen 29
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
B Wozu Observer? Java Basics - Anfänger-Themen 9
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
J Datentypen Array in enum, ?? Wozu ?? Java Basics - Anfänger-Themen 3
J Wozu werden die anonyme Klassen verwendet? Java Basics - Anfänger-Themen 9
F Wozu ist Java gut? Java Basics - Anfänger-Themen 7
H Maps? Wozu? Nutzen? Java Basics - Anfänger-Themen 3
0 Wozu braucht man Generics? Java Basics - Anfänger-Themen 1
V wozu ist das 'L' beim long notwendig ? Java Basics - Anfänger-Themen 5
A wozu ant? Java Basics - Anfänger-Themen 12
S Wozu dient die Main Class? Java Basics - Anfänger-Themen 3
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
S Desginfrage Interface - aber wozu eigentlich? Java Basics - Anfänger-Themen 2
E Wozu dienen Schnittstellen? Java Basics - Anfänger-Themen 16
N Wozu Applications? Java Basics - Anfänger-Themen 8
M Methode bekommt ein Objekt der Klasse als Parameter. Wozu? Java Basics - Anfänger-Themen 4
R Wozu sind Interfaces gut? Java Basics - Anfänger-Themen 14
B Hashcode?Was ist das und wozu? Java Basics - Anfänger-Themen 2
R Wozu Interfaces ? Java Basics - Anfänger-Themen 5
G Konstruktoren (was, wozu, wieso, warum) Java Basics - Anfänger-Themen 4
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
R Compiler-Fehler Klasse A nutzt Objekt von Klasse B, um Methode von Klasse B auszuführen Java Basics - Anfänger-Themen 11
S "%s" oder "%n" - wofür nutzt man das? Java Basics - Anfänger-Themen 4
G Kraken HTTP Sniffer: ExceptionInInitializerError (Nutzt JNI) Java Basics - Anfänger-Themen 2
G Nutzt ihr die Methode storeToXML von Properties Java Basics - Anfänger-Themen 2
G Nutzt Jemand JCalendar? Java Basics - Anfänger-Themen 3
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
G main Methode Java Basics - Anfänger-Themen 5
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
J main methode Java Basics - Anfänger-Themen 1
B No Main Classes Found Java Basics - Anfänger-Themen 7
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
M String außerhalb der main-Methode Java Basics - Anfänger-Themen 4
scratchy1 ArrayOutOfBoundException in main-Methode Java Basics - Anfänger-Themen 17
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
G Was als main Method Java Basics - Anfänger-Themen 6
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
J Compiler-Fehler Java findet main Klasse nicht Java Basics - Anfänger-Themen 16
B Parameterübergabe in main Java Basics - Anfänger-Themen 1
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
M Methodenaufruf in der Main Datei funzt nicht Java Basics - Anfänger-Themen 13
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
G Instanzvariable in main-Methode verboten? Java Basics - Anfänger-Themen 3
M Objekt starten von der main-Methode Java Basics - Anfänger-Themen 1
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben