为什么PrintStream类有printf和format方法,如果它们的行为方式相同?

时间:2017-09-24 04:45:08

标签: java printstream

当我在printf课程中查看PrintStream方法的实现时,我发现它所做的就是在同一个类中调用format方法。

public PrintStream printf(String arg0, Object... arg1) {
    return this.format(arg0, arg1);
}

public PrintStream printf(Locale arg0, String arg1, Object... arg2) {
    return this.format(arg0, arg1, arg2);
}

当我试图找出为什么在调用printf方法时需要format方法时,我得到的答案暗示他们的行为方式完全相同

如果它们都是同一个类的成员,则它们都是public,并且它们都添加到Java 1.5 中,那么为什么printf 1}}方法定义了吗?

1 个答案:

答案 0 :(得分:0)

虽然背后有实际的想法

  

为什么定义了printf方法

作者本身可以更好地解释

。然而一个重要的事实是documented

在公开API时,术语用户友好性确实很重要。

  

便捷方法,将格式化字符串写入此输出   使用指定的格式字符串和参数进行流式传输。

调用out.printf(l, format, args)形式的此方法的行为与调用的方式完全相同

out.format(l, format, args) 

我不打算说format不方便,举个例子,假设我一直在使用printf作为其他类的方法来格式化和打印字符串,我觉得使用起来很方便具有相同功能意图的另一个类中的相同方法名称。

这可能不是命名API的一个很好的例子,但是: -

https://stackoverflow.com/questions/46386664/why-does-printstream-class-has-printf-and-format-methods-if-they-behave-in-same/46386688?noredirect=1#comment79731283_46386688

https://stackoverflow.com/questions/46386664

(上面的故意格式化)两者都会提到这个问题,只是我觉得用它的id添加问题的标题很方便,或者我在其他时间访问它时可能没有(用户方便)。