Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java 7 Grundkurs

Die Klasse System

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein ebenso umfangreiches Feld ist die Klasse System, deren bekannteste Anwendung sicher die Ausgabe über die Kommandozeile ist. Sie hat aber noch viel mehr zu bieten – was Sie damit alles machen können, erfahren Sie hier.
05:45

Transkript

Die bekannteste Verwendung der Klasse "System" dürfte wohl die Ausgabe von Texten an die Kommandozeile sein, über "System.out.println". Die Klasse hat aber noch eine ganze Menge mehr zu bieten, und ein paar Sachen davon schauen wir uns in diesem Video an. Die Klasse "System" ist als Utility-Klasse angelegt, also als Hilfsklasse. Sie kann nicht instanziiert werden und ihre Methoden sind alle als "static" deklariert, das heißt, sie werden direkt über den Namen der Klasse aufgerufen. Um die aktuelle Systemzeit auszulesen, gibt es beispielsweise diese Methode: "currentTimeMillis". Wir bekommen die Systemzeit hier als Anzahl der Millisekunden, die seit 1.1.1970, 00:00 Uhr vergangen sind. Wem Millisekunden noch nicht genau genug sind, um zum Beispiel auszumessen, wie lange ein bestimmter Programmteil zur Ausführung braucht, für den gibt es die Methode "nanoTime". Hier bekommen wir die Zeit in Nanosekunden. Allerdings hat der Wert, der hier zurückkommt, nicht unbedingt etwas mit der aktuellen Systemzeit oder Uhrzeit zu tun, sondern es ist lediglich garantiert, dass die Zahl, die hier zurückgegeben wird, pro Nanosekunde immer um eine Zahl größer wird. Vorausgesetzt natürlich, das darunter liegende System liefert auch eine ausreichend genaue Zeitmessung. Diese Methode "nanoTime" ist also immer nur für relative Zeitmessungen geeignet. Wie zum Beispiel hier. Ich nehme mir hier mit "nanoTime" einen bestimmten Zeitpunkt, merke mir das in der Variablen "Anfang". Dann mache ich etwas, was ich gerne ausmessen möchte. Jetzt hole ich mir nochmal mit "nanoTime" den dann aktuellen Zeitpunkt, bilde die Differenz, und ich weiß, wie viele Nanosekunden diese Ausführung dazwischen gedauert hat. In der nächsten Zeile sehen wir die bereits erwähnte Standardausgabe. Mit "System.out" kann ich auf diese Standardausgabe zugreifen und über "println" z. B. einen Text ausgeben. Aber auch Zahlen lassen sich hier übergeben oder Boolesche Werte, sogar Objekte kann ich hier reinwerfen. Bekommt "println" ein Objekt übergeben, dann schaut es zuerst einmal nach, ob diese Referenz-Variable, die es da bekommt, eventuell null ist, dann wird einfach der Text NULL ausgegeben. Ansonsten geht println zu diesem Objekt hin und ruft die toString-Methode des Objekts auf, und das, was da zurückkommt, das wird dann ausgegeben. Neben der Standardausgabe gibt es noch einen zweiten Ausgabestrom, nämlich die Standardfehler-Ausgabe. Die heißt dann "System.err.println". Diese Standardfehler-Ausgabe könnte man z. B. in einen separaten Ausgabekanal umleiten, wie eine Log-Datei. Eine IDE, wie NetBeans beispielsweise, stellt solche Texte in einer anderen Farbe dar. Ich zeige das mal, ich führe mal dieses Programm aus. Rechte Maustaste, "Run file", und dann sehen wir hier: Das hier ist die Standardausgabe, und das Rote hier unten, das ist das, was über die Standardfehler-Ausgabe aus dem Programm rauskommt. Nun haben wir Standardausgabe, Standardfehler-Ausgabe. Der dritte im Bunde ist die Standardeingabe. Und die heißt dann "System.in". Im Gegensatz zu den beiden Standardausgaben ist dieses "System.in" recht unkomfortabel und das direkte Arbeiten damit ist auch recht mühselig. Deshalb verwende ich hier auch "System.in" nicht direkt, sondern ich schiebe ein anderes Objekt dazwischen, und zwar ein Scanner-Objekt. "Scanner" ist eine Klasse aus dem Paket "java.util", und deshalb muss ich die auch importieren. Ein Scanner-Objekt nimmt einen beliebigen Eingabestrom im Konstruktor entgegen und bietet dann die Möglichkeit, aus diesem Eingabestrom gezielt Daten zu extrahieren. Klingt vielleicht kompliziert, ist aber eigentlich ganz einfach. Ich habe hier diesen Scanner z. B. "Tastatureingabe" genannt. Und wenn ich jetzt einfach die nächste Zeile eingegeben haben möchte, also sprich, alles bis zum Enter, dann rufe ich einfach die Methode "nextLine" auf. Der Scanner zieht jetzt alles aus System.in, was eingegeben wird, und wenn ein Enter kommt, dann ist er fertig und gibt das Ganze als String zurück. Ich bin aber beim Scanner nicht darauf beschränkt, Strings entgegenzunehmen. Auch das Konvertieren in verschiedene Datentypen übernimmt der Scanner gleich für mich. Ich kann z. B. mit "nextInt" dem Scanner sagen: "Hör mal, das was da jetzt als nächstes reinkommt, interpretiere das gleich mal als "Int", und gibt mir dann auch ein "Int" zurück." Und genau das macht er dann auch. Da der Scanner externe, zusätzliche Ressourcen akquiriert, ist es immer wichtig, dass wir ihn schließen, wenn wir ihn nicht mehr brauchen, damit diese Ressourcen wieder freigegeben werden können. Das erfolgt immer über die Methode "close". Wenn Sie also einen solchen Scanner verwenden und ihn nicht mehr brauchen, dann immer "close" aufrufen. Apropos nicht mehr brauchen, wenn Sie ihr Programm nicht mehr brauchen und es vorzeitig verlassen möchten, dann können Sie das über "System.exit" machen, und hier als Parameter geben Sie den Rückgabe-Code an, den die Java-VM an den aufrufenden Prozess des Betriebssystems zurück geben soll. Mit "exit" beenden wir also das Programm und auch die VM. Und eine "0", wie sie hier steht, bedeutet normalerweise, es ging alles in Ordnung. Schließlich bietet die Klasse System noch die Möglichkeit, auf Properties zuzugreifen. Das ist so etwas wie Umgebungsvariablen innerhalb der virtuellen Maschine. Hier zum Beispiel hole ich mir das Home-Verzeichnis des angemeldeten Nutzers. Dazu muss ich der Methode "getProperty" diesen magischen String "User.home" übergeben, und dann bekommen ich einen anderen String zurück, nämlich, wie gesagt, das Home-Verzeichnis. Eine Liste aller vordefinierten Properties finden Sie in den Dokumentationen zur Klasse "System", und zwar bei einer anderen Methode, nicht bei der "getProperty"-Methode, die einen Key nimmt und einen Value zurücknimmt, sondern bei "getProperties". Dort haben wir eine Auflistung aller vordefinierten Properties. Hier unten haben wir "User.home" und dann steht hier, das ist das Home-Verzeichnis des Benutzers. Es gäbe zum Beispiel auch die Möglichkeit, den Namen herauszufinden, unter dem der Benutzer gerade angemeldet ist, oder auch das aktuelle Arbeitsverzeichnis. Selbst solch faszinierenden Sachen wie der Name des darunterliegenden Betriebssystems oder die aktuelle Java-Version lassen sich auf diese Weise ermitteln. Damit sind wir am Ende unserer kleinen Tour durch diese Klasse "System" angekommen, und Sie haben gesehen, was Sie damit alles so machen können.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!