2010-07-23 4 views
5

Ich habe schon eine Weile in Java programmiert, aber ich habe immer noch ein paar brennende Fragen zu den Grundlagen. Ich habe gehört, dass ich System.out.println() verwenden sollte, um Daten von einigen Leuten anzuzeigen, und andere haben mir andere Ideen gegeben (wie PrintStream oder etwas anderes). Was ist der beste Weg, um in Java auf Konsole zu drucken?Soll ich System.out.println() oder etwas anderes verwenden?

Antwort

14

System.outist ein PrintStream.

Wenn Ihr Hauptziel die Interaktion mit einer Konsole ist, sehen Sie sich java.io.Console an. Wenn Ihr Hauptziel eine Protokollierung ist, verwenden Sie ein Protokollierungs-Framework wie die Java Logging API oder log4j.

15

Wenn Sie gerade beginnen und einige Zeichenfolgen auf der Konsole drucken möchten, ist System.out.println() in Ordnung. Holen Sie sich Ihre Grundlagen und tauchen Sie dann in die Feinheiten von Java I/O ein.

+0

Vielleicht haben sie die Java I/O-Bibliotheken geschrieben: P – wshato

1

Art hängt davon ab, was Sie tun. Fast immer würde ich vorschlagen, die Java-Protokollierungs-API (java.util.logging) zu verwenden. System.out.println ist eher ein "Debug-Tool", aber selbst dann haben Sie viel mehr Kontrolle über die Ausgabe mit dem Logging-API des JDK ...

0

Verwenden Sie log4j und direkte Ausgabe zu stdout. Es ist dann einfach, nach Bedarf zu Logfiles zu wechseln.

0

Mit System.out direkt ist der einfachste und in der Regel effizienteste Weg. Wenn Sie eine Menge zu drucken haben, können Sie unter Verwendung von BufferedOutputStream untersuchen.

Es gibt einige Effizienzen, die erzielt werden können, wenn die Strings effizienter gedruckt werden. Wenn es viele Verkettungen gibt, schauen Sie in StringBuilder.

2

System.out ist gut zum Drucken auf der Konsole. Ich fand jedoch, dass es eine bessere Wahl für mich war, java.util.logging zu verwenden. (Oder ein Protokollierungssystem.)

Es hängt davon ab, welche Informationen Sie anzeigen möchten. Wenn es um Konsolenbenutzerinteraktion geht, ist System.out perfekt. Wenn Debug-ish-Informationen angezeigt werden sollen, ist das Protokollieren wahrscheinlich der richtige Weg, da Sie dadurch viel mehr Kontrolle über die Dinge haben, wenn Sie es wünschen.

(Nach der ersten Inbetriebnahme ist das Logging-Dienstprogramme fast so transparent wie System.out verwendet wird.)

0

yu

System.setOut einstellen kann (neue Print („all-my-sysouts -go-in-diesem-file.txt“);

und dann sysoyts tun ...

yu sie baretail ...

Hoffnung mit verfolgen können dies hilft ..

raj.

0

werde ich vorschlagen Java Logging-APIs verwenden

0

Ja, die einfachste und effizienteste Weg, um die Konsole zu drucken, ist in der Regel System.out.print() und System.out.println(), aber wenn Sie Eine große Menge zu sendender Ausgabe, System.out.println() ist möglicherweise ineffizient, da es liniengepuffert ist und viel mit der Unicode-Verarbeitung zu tun hat. Wegen seiner kleinen Puffergröße, System.out.println() ist nicht gut geeignet, um viele sich wiederholende Ausgaben im Stapelmodus zu verarbeiten. Jede Zeile wird sofort gelöscht. In diesem Fall möchten Sie möglicherweise einen BufferedOutputStream oder einen BufferedWriter verwenden.

Es ist wichtig zu beachten, dass System.out nicht immer zu der Anwendungskonsole oder Terminal gehen. System.out zeigt auf den Standard-Ausgabekanal der Anwendung ; in C/C++ heißt es stdout. Das kann zur Konsole gehen, aber es kann auch irgendwo gehen, dass der Benutzer beschließt, es zu senden. Zum Beispiel eine Datei, dann alles auf System.out gedruckt wird in der Datei my-app-output.txt enden.

Wenn Sie also eine reguläre Ausgabe senden möchten, verwenden Sie System.out. Wenn Sie eine Fehlermeldung oder Benutzerbenachrichtigung senden möchten, mit einer großen Chance, zur Konsole zu gehen, verwenden Sie System.errr.print() und System.err.println().

Es gibt keinen portablen Weg, um einen Kanal zu der "echten" Konsole in Versionen von Java vor 1.6 zu bekommen. In 1.6 gibt es eine Objektklasse , die speziell die Konsole darstellt: java.io.Console. Eine Referenz zu diesem eindeutigen Objekt kann von der System-Klasse mit der statischen Methode console() abgerufen werden.

Aber wenn Ihre Anforderung ist, die gesamte Anwendung zu debuggen, dann wie jeder sagte mit Loggern ist der beste Ansatz.