subclasses offer limited formatting capabilities and are
rather clumsy compared to the C language printf()
function, which provides a wide range of formatting options
combined with output operation.
To satisfy the demands of programmers for such a facility
and to facilitate the porting of C programs to Java, J2SE
5.0 comes with the class java.util.Formatter,
which can both format numerical output into a string and
send the string to a file or other destination (we discuss
I/O in Chapter
Numerical values are formatted according to format specifiers
like those for the printf()
function in C.
Furthermore, J2SE 5.0 added a printf()
method to the PrintStream
class (see Chapter
9). So now you can use System.out.printf()
to send formatted numerical output to the console. It uses
object internally and so emulates the printf()
function in C.
In Chapter 9
we return to the java.util.Formatter
class in the context of Java I/O. Here we introduce the
method so that you can begin to take advantage of it.
The simplest of the overloaded versions of the method
(String format, Object... args)
The "..." indicates the varargs functionality (also
referred to as variable arity methods), which we
noted in Chapter
1 was introduced with J2SE 5.0. It allows a method to
accept a variable number of arguments. We note that the
arguments can be primitives as well as object references,
e.g. the wrappers for the primitives.
The format argument is a string in which you embed specifier
substrings that indicate how the arguments appear in the
output. For example,
pi = Math.PI;
System.out.printf ("pi = %5.3f%n", pi);
results in the console output
The format string includes the specifier "%5.3f"
that is applied to the argument. The '%'
sign signals a specifier. The width value 5 requires at
least five characters for the number, the precision value
3 requires three places in the fraction, and the conversion
symbol 'f' indicates a decimal representation of a floating-point
A specifier needs at least the conversion character, of
which there are several besides 'f'. Some of the other conversions