當我在PrintStream
課程中查看printf
方法的實現時,我開始知道它只是在同一個類中調用format
方法。爲什麼PrintStream類具有printf和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
方法?
我可以改變這個問題:爲什麼'format'方法被定義?對我來說,名稱「格式」並不意味着打印,但「printf」的確如此,「printf」與相應的[C method](http://www.cplusplus.com/reference/cstdio/printf/)非常相似功能。 'String.format()'是有意義的,因爲它格式化和返回結果。 'PrintStream.printf()'是有道理的,因爲它打印格式化的字符串。鑑於這些,'PrintStream.format()'在結果上令人困惑/誤導。它不直觀*,至少不是我。 – Andreas
@安德里亞,正好!問題是爲什麼有一個調用另一個時有兩種方法。 – Yogesh
爲什麼大自然要發明貓和**狗?他們都是食肉動物。當然,其中的一種是不必要的! –