我想知道为什么Java 5 及更高版本使用 String 类中的静态方法提供了一个 printf 样式的格式化程序,如下所示:
public static String format(String format, Object... args)
代替
public String format(Object... args)
这样我们就可以写"%02d".format(5)
get05
而不是String.format("%02d", 5)
.
我想如果我可以修改 String 类,我可以添加这个:
public String format(Object... args) {
return format(this, args)
}
得到相同的结果。
我发现在 C# 中,也使用静态方法而不是实例方法。
我想知道他们为什么决定这样做,但我没有做出解释。实例方法trim
并substring
返回一个新的字符串实例,所以他们应该对format
.
此外,该DateFormat
课程还使用了这个:
public final String format(Date date)
用于格式化日期。因此,如果我们将 DateFormat 的实例视为格式化程序,则 String 的实例也可以用作格式化程序。
有任何想法吗?