Ausgaben mit print(), printf() und println()In Java kann man Text mit den Methoden System.out.print(), System.out.println() und System.out.printf() auf der Konsole ausgeben. Der Unterschied zwischen print() und println() ist, dass println() die aktuelle Zeile immer mit einem Zeilenvorschub abschließt und die nächste Ausgabe in der nachfolgenden Zeile erfolgen wird, während print() in der selben Zeile weiterschreiben lässt. printf() schließt ebenso wie print() die Zeile nicht ab, die nächste Ausgabe wird also hinter dem letzten geschriebenen Zeichen erfolgen. Weiterhin erlaubt printf() die Formatierung der Ausgabe.
print(), println() und printf() sind Methoden der PrintStream-Klasse, bei der sie auch im Detail beschrieben sind.
System.out.println()print() und println() können mit verschiedenen Datentypen als Parameter aufgerufen werden. Die Wirkung des Pluszeichens (+) hängt dabei von den beteiligten Datentypen und ihrer Stellung ab.
Beispiele
Anweisungen Ausgabe und Bemerkungen
System.out.println(); Ein Zeilenvorschub wird ausgegeben, die nächste Ausgabe erfolgt in die nächste Zeile.
System.out.println("A"); Ausgabe: A
String name = "Paul";System.out.println(name + "chen");
Ausgabe: Paulchen
Das Plus-Zeichen verkettet den Inhalt der String-Variablen name mit dem String-Literal "Hallo".
int n = 5;System.out.println("n=" + n);
Ausgabe: n=5
Das Plus-Zeichen verkettet das String-Literal "n=" mit dem Inhalt der int-Variablen n.
System.out.println(3 + 2); Ausgabe: 5
Das Plus-Zeichen wirkt hier als Additions-Operator: Java evaluiert zuerst den Inhalt der Klammer. Da dort eine reine Rechenoperation steht, wird diese als erstes ausgeführt. Das Ergebnis der Addition wird der println()-Methode zur Ausgabe übergeben.
System.out.println("Hallo");System.out.println("du");System.out.println("da");
Halloduda
println() schließt jede Ausgabe mit einem Zeilenumbruch ab, jede Ausgabe erfolgt in eine eigene Zeile.
Ausgaben mit print(), printf() und println() 05.01.2013 - HPG / GOL 1 (4)
Anweisungen Ausgabe und Bemerkungen
System.out.print("Hallo");System.out.print("du");System.out.print("da");
Halloduda
print() schreibt nur den angegebenen Parameter ohne Zeilenumbruch, die Ausgaben erfolgen ohne Trennzeichen direkt hintereinander.
System.out.printf()Die printf()-Methode wird üblicherweise verwendet, wenn die Ausgabe formatiert sein soll. printf() beendet Zeilen nicht mit einem Zeilenumbruch. Hier werden nur Teilaspekte und die elementare Verwendung von printf() beschrieben. Für eine vollständige Beschreibung siehe die Dokumentation der Formatter-Klasse.
Die printf()-Methode erfordert mindestens einen Parameter vom Typ String, der im folgenden als „Formatierungsstring” bezeichnet wird. Dieser Formatierungsstring kann normalen Text enthalten, der wie von der print()-Methode ausgegeben wird. Zum Beispiel bewirkt die Anweisung
System.out.printf("Hallo Welt"); das Gleiche wie
System.out.print("Hallo Welt"); Der Formatierungsstring kann auch Ausdrücke enthalten, die die Formatierung der Ausgabe steuern. Jeder Formatierungsausdruck besteht aus einem Prozentzeichen (%), dem die eigentliche Formatbeschreibung folgt, z.B. %3d für die 3-stellige Ausgabe einer Ganzzahl. Für jeden solchen im Formatierungsstring gefundenen Formatierungsausdruck muss der printf()-Methode ein Parameter übergeben werden, der seinem Formatierungsausdruck gemäß ausgegeben wird. Die Anzahl der Methodenparameter ergibt sich also aus der Anzahl der Formatierungsausdrücke. Die Anweisung
System.out.printf("%3d\n", 12);wird von Java folgendermaßen interpretiert:Im Formatierungsstring wird ein Prozentzeichen gefunden, Java erwartet dahinter einen gültigen Formatierungsausdruck. 3d ist ein gültiger Formatierungsausdruck und bedeutet, dass der Methodenaufruf einen Parameter vom Typ int enthalten muss, der rechtsbündig in der Länge 3 ausgegeben wird.
Der Formatierungsausdruck hat vereinfacht folgende Form (die Einträge in den eckigen Klammern sind optional):
%[Schalter][Breite].[Genauigkeit]Typ
• Die optionalen Schalter verändern das Format der Ausgabe. Ein Minuszeichen (-) z.B. sorgt für linksbündige Ausgabe.
• Die optionale Breite ist eine nicht-negative Ganzzahl, die die Mindestanzahl der insgesamt ausgegebenen Zeichen bestimmt.
• Mit der optionalen Genauigkeit wird üblicherweise die Anzahl der ausgegebenen Zeichen eingeschränkt.
• Für Typ ist ein Buchstabe anzugeben. Beispiele für mögliche Werte von Typ sind:
Typ Beschreibung
s Der zugehörige Parameter wird als String ausgegeben.
S Der zugehörige Parameter wird als String in Großbuchstaben ausgegeben.
2 (4) 05.01.2013 - HPG / GOL Ausgaben mit print(), printf() und println()
d Der zugehörige Parameter wird als Ganzzahl ausgegeben.
f Der zugehörige Parameter wird als Dezimalzahl ausgegeben.
In den folgenden Beispielen werden verschiedene Umwandlungen und Formatierungsausdrücke diskutiert.
Beispielanweisungen Ausgabe und Bemerkungen
System.out.printf("Text");System.out.printf("X");
Ausgabe: TextX
Die beiden printf() enthalten keine Formatierungsausdrücke und verhalten sich daher wie print(). Die Ausgabe des zweiten Methodenaufrufs wird ohne Zeilenumbruch direkt an die erste angehängt.
System.out.printf("%d\n", 12); Ausgabe: 12
Im Formatierungsstring steht der Formatierungsausdruck %d. Für diesen Formatierungsausdruck muss im Methodenaufruf ein Parameter vom Typ int folgen, der dann als Ganzzahl ohne weitere Formatierung ausgegeben wird.
int x = 12;System.out.printf("X=%3d, Y=%3d\n", x, 12345);
Ausgabe: X= 12, Y=12345
Der Formatierungsstring enthält neben normalem Text ("X=", ", Y=" und "\n") zweimal den Formatierungsausdruck %3d. Für jeden dieser Formatierungsausdrücke muss ein Parameter vom Typ int folgen, hier die int-Variable x (mit dem Wert 12) und die int-Konstante 12345. Die 3 in %3d bedeutet, dass die Ausgabe mindestens 3 Stellen lang ist. Für 12 werden nur 2 Stellen benötigt, die zusätzliche dritte Stelle ist als Leerzeichen vor der 12 sichtbar (Zahlen werden standardmäßig rechtsbündig ausgegeben). Die 3 im zweiten Formatierungsausdruck hat hier keine Wirkung, da für die Ausgabe von 12345 mehr Stellen als die minimale Anzahl 3 benötigt werden.
3 (4) 05.01.2013 - HPG / GOL Ausgaben mit print(), printf() und println()
Beispielanweisungen Ausgabe und Bemerkungen
double y=1234.1254567890;System.out.printf("A:%f:\n", y);System.out.printf("B:%5.2f:\n", y);System.out.printf("C:%12.5f:\n", y);System.out.printf("D:%12.6f:\n", y);
Ausgabe:
A:1234,125457:B:1234,13:C: 1234,12546:D: 1234,125457:
In diesem Beispiel enthält jeder Formatierungsstring jeweils festen Text und je einen Formatierungsausdruck.
Im Fall A ist in dem Formatierungsausdruck %f für Dezimalausgabe keine Mindestbreite und keine Genauigkeit festgelegt. Java verwendet dann Standardwerte.
Im Fall B beschränkt der Formatierungsausdruck %5.2f die Ausgabe auf 2 Dezimalstellen, die gerundet (!) ausgegeben werden. Die vorgegebene Mindestbreite 5 bleibt hier ohne Auswirkungen, da einschließlich Komma schon 7 Stellen benötigt werden.
Im Fall C werden durch %12.5f mindestens 12 Stellen für die Ausgabe bereitgestellt, d.h. 5 Dezimalstellen, das Komma und als Konsequenz 12 – 5 – 1 = 6 Stellen vor dem Komma. Da nur 4 Stellen vor dem Komma benötigt werden, erscheinen vor der Zahl 2 Leerstellen.
Im Fall D mit %12.6f wird Platz für 6 Dezimalstellen, ein Komma und 12 – 6 – 1 = 5 Stellen vor dem Komman bereitgestellt. Da nur 4 Stellen vor dem Komma benötigt werden, erscheint vor der Zahl eine Leerstelle.
String gs = "gross";double d = 1.9;System.out.printf("!%4.1fm ist %7S!\n", d, gs);
Ausgabe: ! 1,9m ist GROSS!
Beachte die Einrückung der 1.9 um eine Stelle: Für die Darstellung von 1.9 mit einer Nachkommastelle werden drei Positionen benötigt, als Mindestbreite sind bei %4.1f aber vier Zeichen vorgegeben.Der Formatierungsausdruck %7S wandelt den zugeordneten String in Großbuchstaben um und stellt dafür mindestens 7 Stellen zur Verfügung. Da GROSS nur 5 Stellen benötigt, wird links mit 2 Leerzeichen aufgefüllt..
4 (4) 05.01.2013 - HPG / GOL Ausgaben mit print(), printf() und println()