前两个完全相同,因为printf
实现为 ( source )
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
后两者也完全相同,因为String.format
实现为 ( source )
public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
}
最后,第 2 和第 4 大致相同,从PrintStream.format
( source ) 的实现中可以看出。在引擎盖下,它还创建一个新的
Formatter
(如果需要)并调用format
它Formatter
。
public PrintStream format(String format, Object ... args) {
try {
synchronized (this) {
ensureOpen();
if ((formatter == null)
|| (formatter.locale() != Locale.getDefault()))
formatter = new Formatter((Appendable) this);
formatter.format(Locale.getDefault(), format, args);
}
} catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
} catch (IOException x) {
trouble = true;
}
return this;
}