Erste Schritte StdIn vs args[] und Arrays vs "Einzelinitialisierung"

ndwho

Mitglied
Hallo Leute,

das Topic hat hoffentlich etwas verwirrendes hervorgerufen 🙂 Aber, wenn ich meine Frage nun etwas genaue stelle, hoffe ich, dass hier mir einige helfen können:
(im Internet, SuFu, usw. leider nichts gefunden)

Ich wollte nun wissen was der Unterschied zwischen einem StdIn und einem args[] in Java ist?
Ich weiß zum Beispiel, dass wenn eine Eingabe zu einem Algorithmus in einem Hosts erforderlich ist, sowas wie int a = Integer.parseInt(args[0]); das 0. Argument an Stelle 0 vom Host eingelesen wird und dann durch die Klasse (z. B. java datei 5) durchgeführt wird.
Im Internet steht aber, dass StdIn ebenfalls Eingaben von Host entgegennimmt und dann eine Klasse dann durchführt(z. B. char c = StdIn.readChar(); oder int a = StdIn.readline();)
also mein Problem ist, dass ich das so sehe, dass beidesversteht ihr was ich meine?

Zweite Frage zu Arrays:
Ich habe nun gelernt, dass man mit z. B.
int[] irgendwas = new int[5]; ein Array von der Länge 5 erstellt (Platzhalter für irgendwelche Werte "herstellt") wird. Anschließend muss man dann die Arrays mit Werten fühlen, z. B. int[0] = 23; int[1] = 55; usw.
Meine Frage: Wieso gibt es diese Funktion/Objekt eines Arrays, wenn man DIREKT initialisieren kann mit int a = 23; int b= 55; usw.. Dienen sie einfach zur reinen "Übersicht" bzw. die Anweisung "kompakter" zu machen?

Ich hoffe ihr versteht mein Verständnisproblem 😛

LG
 
Zu Frage 1:
args sind die Kommandozeilenparameter: java Test 3 4 2 gibt folgendes args: {"3", "4", "2"}

Die Standardeingabe (StdIn = Standard Input) ist alles, was du, während das Programm läuft (also nach dem drücken von Enter in der Kommandozeile) noch eingibst. Es ist das gegenteil von der Standardausgabe. In Java sind das System.out und System.in.

Zu Frage 2:
Die lässt sich eigentlich mit 1. beantworten: Man deklariert die main() Methode mit einem String[]. Man gibt aber keine Länge an. Ergo: die Anzahl an Strings muss beim Kompilieren der main() Methode nicht bekannt sein. Wenn du alle Variablen einzeln deklarieren würdest, schon.
Dass man beim erstellen des Arrays die Größe mit angeben muss hat andere Gründe.
 
@ndwho Wenn du viele int Werte hast lässt sich ein int[] wesentlich leichter und schneller füllen (for Schleife) als das du für jeden Wert eine Variable deklarierst...

weitere Vorteile eines int-Arrays:

- du kannst das Array nach den Werten sortieren
- ist es sortiert, kannst du den niedrigsten u. höchsten Wert herausfinden
- ein Array lässt sich leichter übergeben als tausende Variablen
- viele Methoden die man auf Arrays anwenden kann..
 
Zuletzt bearbeitet:
Danke @TheFrog ! Habe jetzt eine gute Vorstellung zum Array 🙂

@Tobse also ist die StdIn sozusagen die "dynamische" Version die während ein Programm läuft eingaben entgegennimmt und die Kommandozeilenparameter (args) eher "feste Werte" sind die das Programm vor der Durchführung des Programms von der Kommandozeile annimmt?
 
Die Kommandozeilen-Parameter sind so ziemlich das selbe wie Methodenparameter; nur eben auf das Programm und nicht auf eine Methode gesehen. Den StdIn kann man so beschreiben, wie du es tust 🙂
 
"Kann man so beschreiben, wie du es tust" *lach* Gut danke, bin leider neu in der Materie. Aber vielen Dank an die schnelle Hilfe! Daumen hoch 🙂
 

Zurück
Oben