System.out.printf vs System.out.format
Are System.out.printf
and System.out.format
totally the same or perhaps they differ in somehow?
System.out
is a PrintStream
, and quoting the javadoc for PrintStream.printf
An invocation of this method of the form
out.printf(l, format, args)
behaves in exactly the same way as the invocationout.format(l, format, args)
The actual implementation of both printf overloaded forms
public PrintStream printf(Locale l, String format, Object ... args) {
return format(l, format, args);
}
and
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
uses the format method's overloaded forms
public PrintStream format(Locale l, String format, Object ... args)
and
public PrintStream format(String format, Object ... args)
respectively.
No difference.They both behave the same.
The key difference between printf
and format
methods is:
- printf: prints the formatted String into console much like System.out.println() but
- format: method return a formatted String, which you can store or use the way you want.
Otherwise nature of use is different according to their functionalities. An example to add leading zeros to a number:
int num = 5;
String str = String.format("%03d", num); // 005
System.out.printf("Original number %d, leading with zero : %s", num, str);
// Original number 5, leading with zero : 005