当我在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
为什么大自然要发明猫和**狗?他们都是食肉动物。当然,其中的一种是不必要的! –