这四种格式化相同数据的方式有什么区别吗?
// Solution 1
System.out.printf("%.1\n",10.99f);
// Solution 2
System.out.format("%.1\n",10.99f);
// Solution 3
System.out.print(String.format("%.1\n",10.99f));
// Solution 4
Formatter formatter = new Formatter();
System.out.print(formatter.format("%.1\n",10.99f));
formatter.close();
前两个完全相同,因为 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
(如果需要)并在该 Formatter
上调用 format
。
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;
}
我是一名优秀的程序员,十分优秀!