可能重复:
Advantages and Disadvantages of using System.out.printf();
在一个在线论坛的讨论中,我被告知使用printf
方法(如System.out.printf()
中)是一种不好的做法,我应该使用println
代替,尽管用户无法给出明确的解释,这是“他被告知”的事情。这是真的吗?
答案 0 :(得分:2)
如果您需要 printf
的格式化功能,那么毫无疑问,因为println
不是可接受的选择。
另一方面,如果您只输出一个普通字符串,例如:
System.out.printf("All work completed.\n");
那么使用println
来实现这一目标会更为规范。在程序正确性方面它并不重要 - printf可能略微运行起来更加昂贵,但实际上这并不重要。
但是,我确实看到了一些使用printf
进行简单输出的示例代码,我承认我发现它令人困惑。因此,我坚持println
仅仅因为这个原因,它将使您的代码更熟悉,更容易理解其他开发人员。
(ETA:即使现在回顾我自己的帖子,我本能地认为代码示例是错误的,并希望将其更正为println
。所以我的早期观点肯定仍然存在。)
答案 1 :(得分:1)
printf
可以执行println
无法执行的操作,因此说总是使用println
而不是printf
显然不会有道理。
对于那些不知道printf
控制字符串中使用的格式说明符的人来说,他们可能很难阅读 - 这可能是你谈过的人建议你不要使用{{1}的原因}。
下次有一些更一般的建议:记住有很多人会很乐意给你建议,尽管不知道他们在谈论什么,甚至在那些做知道他们是什么的人中间我在说,有很多关于编程的意见,因为有程序员。因此,你应该从不采取任何福音,因为有人告诉你或因为你在书中读到它。 始终尝试了解建议的原因,并记住每个规则都有例外。理解你在设计或实施一个程序时做出的每一个决定几乎都有利有弊,所以通常没有一个选项无条件地“正确”; 你必须利用自己的经验和判断来确定在当前情况下做事的“正确”方式,即使在其他大多数情况下它可能是“错误的”例。
答案 2 :(得分:1)
不,这不是真的。
我能想到的唯一可能的理由是printf
格式字符串中的文字\n
和/或\n
将生成特定于平台的换行符...是一个可移植性问题。但简单的解决方案是在格式字符串中使用%n
。
当然,当没有参数需要替换为格式字符串时使用printf
不是最佳的。我不会说这会使它成为糟糕的做法。
答案 3 :(得分:0)
如果您正在进行调试日志记录,那么使用其中任何一个都是“不好”的做法。
如果是这种情况,使用适当的日志框架是“最佳”做法。 Java有很多选择。