Java Syntax und Semantik: Habe ich es soweit richtig verstanden?

vram78

Lieutenant
Registriert
Dez. 2015
Beiträge
712
Hi,

Also folgender Code hatte mich immer irritiert:

Java:
int alter = new java.util.Scanner(System.in).nextInt();

Habe nun erfahren, dass es eine Kurzschreibweise von

Java:
Scanner scanner = new Scanner(System.in);

int alter = scanner.nextInt();

ist.

Das heißt also, dass wir eine Instanz der Klasse Scanner mit dem Namen scanner anlegen. Dann legen wir einen Datentyp des Typs int an und darin wird jene Zahl abgespeichert was man dann in der Konsole eingibt, dies geschieht mit der nextInt(); Methode. Ich verstehe jedoch eine Sache weiterhin nicht:

Wir erstellen also ein Objekt ->
Java:
Scanner scanner = new Scanner(System.in);
Was genau bewirkt System.in ? Das verstehe ich immer noch nicht. Wir haben die jeweilige Instanz in unserer Klasse und haben nun Zugriff auf alle Methoden der Klasse Scanner. Was aber soll dieses System.in sein? Ich verstehe die Bedeutung und die Syntax ganz und gar nicht.

MFG
 
Du kennst ja sicherlich, dass du mit
Java:
System.out.println("Hier steht eine Ausgabe in die Konsole")
Text in die Konsole ausgeben kannst.

System.in ist das Gegenstück zu System.out und damit übergibst du quasi dem Scanner bei Instanziierung die Input-Schnittstelle, in die der Nutzer etwas eingeben kann.
 
  • Gefällt mir
Reaktionen: TrUeMaN
Kleine Ergänzung: System wiederum ist eine Klasse, die einige Referenzen hält. Über diese Klasse erhältst du Zugriff auf Umgebungsvariablen, Systemproperties und vieles Andere. Und eben auch Zugriff auf stdin, stdout, stderr.

Siehe: System Javadoc
 
  • Gefällt mir
Reaktionen: ReignInBlo0d
@vram78 Das ist nicht wirklich eine Kurzschreibweise. Willst du mehr als einmal mit einem Scanner nextInt aufrufen schreibst du die "lange" Variante und hälst das Scanner Objekt damit am Leben. In der "Kurzform" geht dieses Objekt nämlich nach dem Ausführen von nextInt flöten und wird weggeräumt. Das mehrfach hintereinander zu machen würde unnötige Aufrufe verursachen.

vram78 schrieb:
Dann legen wir einen Datentyp des Typs int an
Du legst eine Variable an die einen Datentyp hat, hier int. Du legst keinen Datentyp an.

Bzgl. des System.in wurde dir ja schon etwas gesagt. Falls dir das auch noch nicht klar ist: An der Stelle

Java:
new Scanner(System.in);

ist System.in ein Parameter eines Konstruktors der Scanner Klasse.
 
  • Gefällt mir
Reaktionen: ReignInBlo0d
Zurück
Oben