可能重复:
Advantages and Disadvantages of using System.out.printf();Java的printf()是一个不好的习惯吗?
在一个网上论坛的讨论,有人告诉我,使用printf
方法(如在System.out.printf()
)是一个不好的做法,我应该用println
相反,虽然用户无法给出明确的解释,但这是“他被告知”的事情。这是真的?
可能重复:
Advantages and Disadvantages of using System.out.printf();Java的printf()是一个不好的习惯吗?
在一个网上论坛的讨论,有人告诉我,使用printf
方法(如在System.out.printf()
)是一个不好的做法,我应该用println
相反,虽然用户无法给出明确的解释,但这是“他被告知”的事情。这是真的?
不,这是不正确的。
唯一可能的理由,我能想到的是,printf
与格式字符串字面\n
和/或\n
会产生特定于平台的换行......这是一个便携性的问题。但简单的解决方案是在格式字符串中使用%n
。
当然,使用printf
时,如果不需要将参数替换为格式字符串,则不是最佳选择。我不会说这会让它成为坏习惯。
我在有关格式化打印的Oracle文档中阅读了有关该问题的内容,并且我已经知道这一点。但我认为这是知道可用指示符以及为什么应该使用它们的问题。谢谢回复。 – Baderous 2012-03-06 16:24:36
printf
能做的事情,println
不能,所以说你应该总是使用println
而非printf
显然没有意义。
对于不知道printf
控制字符串中使用的格式说明符的人,可能难以阅读 - 这可能是您与之通话的人建议您不要使用printf
的原因。
下一次一些更一般性的建议:记住有很多的人谁将会很乐意给尽管不知道他们在说什么,甚至在那些谁做知道他们在说什么,你的意见关于编程的观点与程序员一样多。所以你应该从来没有只因为有人告诉你或因为你读了一本书而接受任何福音。 总是试着了解建议的原因,并记住每规则也有例外。要明白,在设计或实施项目时,你所做的每一项决定都有利有弊,所以通常没有一项是无条件“正确”的选择; 你必须使用你的经验和判断力,以确定什么是“正确”的方式来做在你目前的情况下,即使它在大多数情况下可能是“错误的”。
我同意你的意见。由于我对编码的这些“教条”持怀疑态度,我从来没有听说过这个,所以我决定在这里问。 – Baderous 2012-03-06 16:19:10
如果你需要的格式化功能printf
,那么毫无疑问,因为println
是不可接受的选择。
如果在另一方面,你只是一个输出正常的字符串,例如:
System.out.printf("All work completed.\n");
那么这将是更规范使用println
这一点。就程序的正确性而言,它并不重要 - printf可能会更加昂贵,但实际上这并不重要。
但是,我确实看到了一些使用printf
进行简单输出的示例代码,我承认我发现它很混乱。所以我坚持仅仅是因为这个原因println
,它会让你的代码更加熟悉并且更容易理解其他开发者。
(ETA:即使检讨我自己的职位,现在,我本能地觉得代码示例是错误的,并希望将其修正为println
所以我刚才的看法肯定还是持有。)
无论使用哪一种是“坏“练习如果你正在做调试日志。
如果是这种情况,使用适当的日志记录框架是“最好”的做法。 Java有很多选择。
在问题中,它被告知它的用途是日志记录? – brunoais 2012-03-06 21:35:11
它问不好的做法,我举一个例子,这是...恰好适用于两种选择 – 2012-03-07 13:14:42
http://stackoverflow.com/questions/548249/is-there-a-good-reason-to-use-printf-instead-of-print-in-java – Zavior 2012-03-06 15:48:16