Ab dem JDK 1.5 enthält die Klasse PrintStream die Methode prinf, mit der formatierte Ausgaben möglich sind. Die allgemeine Syntax einer solchen Angabe folgt dem Schema1
"%[Argument-Index$][Flags][Breite][.Nachkommastellen]Konvertierungstyp", argument 1, arument 2, ...
Hierbei bedeuten die einzelnen Einträge folgendes:
| Index | Position innerhalb der Argument-Liste: 1$ bezeichnet das erste Argument, 2$ das zweite, etc. |
| Flags | Gibt das Ausgabeformat an. Die erlaubten Flags richten sich nach dem jeweiligen Argumenttyp. |
| Breite | positiv ganzzahlig; gibt die Minimalzahl der Zeichen an, die ausgegeben werden |
| Nachkommastellen | Anzahl der auszugebenden Nachkommastellen |
| Konvertierungstyp | Konvertierungstyp des Arguments |
| '-' | linksbündige Ausrichtung |
| '+' | Vorzeichen immer mit ausgeben |
| '0' | Auffüllen der Breite mit Nullen, Breite muss angegeben werden! |
| b | entspricht String.valueOf() für boolsche Werte, sonst true wenn arg != null |
| c | Unicode-Character-Darstellung |
| d | Dezimal (Integer zu Basis 10) |
| o | Octal (Integer zu Basis 8) |
| x | Hexadezimal (Integer zu Basis 16) |
| f | Fießkommazahl |
| s | String |
| t | Zeit/Datum; auf das 't' muss eines der folgenden Zeichen folgen: H (Stunde), M (Minute), S (Sekunde), d (Tag), m (Monat), Y (Jahr), D (Datum als Tag-Monat-Jahr) |
boolean bool = 5>2;
System.out.printf("%B", bool); // TRUE
System.out.printf("%b", bool); // true
Calendar c = Calendar.getInstance();
Date d = new Date(5000l);
System.out.printf("Es ist nicht %2$tY, sondern der %1$te.%1$tm.%1$tY", c, d); // Es ist nicht 1970, sondern der 30.12.2009
String w = "Welt!", h = "Hallo ";
System.out.printf("%2$s %1$S", w, h); // Hallo WELT!
System.out.printf("%03d", 7); // 007
System.out.printf("%5c", 38); // &
System.out.printf("%-5c", 38); // &
System.out.printf("%B", bool); // TRUE
System.out.printf("%b", bool); // true
Calendar c = Calendar.getInstance();
Date d = new Date(5000l);
System.out.printf("Es ist nicht %2$tY, sondern der %1$te.%1$tm.%1$tY", c, d); // Es ist nicht 1970, sondern der 30.12.2009
String w = "Welt!", h = "Hallo ";
System.out.printf("%2$s %1$S", w, h); // Hallo WELT!
System.out.printf("%03d", 7); // 007
System.out.printf("%5c", 38); // &
System.out.printf("%-5c", 38); // &
1) Die in '[]' gesetzten Angaben sind optional.