In my previous tutorial on using the Java String format method ("Java sprintf") I showed how to use the
format method of the Java
String class to format strings and text output. That method works fine in many situations where you use the
sprintf function in other languages, such as when you need to either concatenate strings, or print formatted output using something like Log4J.
However, if you want to print formatted text output using the
System.err.println methods with the printf formatting options you're used to with other languages, the easiest way to do that is to instead use the newer
Java printf formatting with System.out.format
For instance, here’s the usual “Hello, world” example, using these new Java formatting and printing methods:
System.out.format("%s, %s", "Hello", "world");
While that example hardly makes it look very valuable, here’s a better Java printf-style formatting example that shows the power of these formatting methods:
System.out.format("The '%s' method died at line %d at '%s'.", methodName, lineNumber, currentTime);
To get the same output without using the new Java format method, you’d have to concatenate (merge) your Strings and variables together, which would be some ugly code, something like this:
System.out.println("The '" + methodName + "' method died at line " + lineNumber + " at '" + currentTime + "'.");
(If you’re familiar with the printf or springtf syntax from the C programming language, or similar methods in the Perl or Ruby languages, you’ll instantly be familiar with the syntax used with
I find the approach using the
format method much easier to write, read, and maintain.
So, as a quick summary, whenever you’re tempted to use those old
System.err.println methods, and you need some nice, formatted output, consider using the newer
System.err.format methods instead.
printf formatting reference
If you’d like to see much more information about formatting options you can use with the Java
System.out.format() method, check out my printf formatting examples (cheat sheet) page. It’s full of
printf formatting options that you can use in the Java language (and other languages, like C, Perl, and Ruby).