假设我想要打印5行文字,哪种方法最好(考虑性能和可读性)。
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
或者
System.out.println("\n\n\n\n");
这是一种偏好问题还是其中一种更好?使用第二种方法似乎可以节省很多时间。
假设我想要打印5行文字,哪种方法最好(考虑性能和可读性)。
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println("\n\n\n\n");
这是一种偏好问题还是其中一种更好?使用第二种方法似乎可以节省很多时间。
两者之间存在功能差异。第一种版本使用平台首选换行符输出换行。第二个版本输出换行字符,这可能不适合在Windows或Mac OS上使用。
这比任何实际或想象中的性能优势都更重要。
关于性能问题,以及为什么每个人似乎都在说“够了”。
你写这段代码的两种方式之间的性能差异可能只有微秒或更少。换句话说,除非代码执行数百万次,否则终端用户不会注意到差异。
通常,专业软件工程师认为,如果不需要使某些东西变得更快,那么花时间使其更快就不值得。而且用客户的钱来做这件事肯定不值得。
只有在有明确的证据表明存在性能问题并且你将要优化的代码才是真正的问题所在/将要出现的情况下,才应该进行微小优化。 如果将时间花费在错误的代码部分进行优化,则时间将被浪费。
那么如何知道何时优化?
那么如何知道要优化什么?
性能并不总是一个不重要的问题。 实际上,对于某些类型的软件,不考虑性能和可扩展性要求的设计或实现可能是一场灾难。 但大多数软件都不是这样的。
System.out.printf("%n%n%n%n%n");
这将使用适合您平台的换行符,而"\n"
则不会。
println()
更简洁,但如果考虑解码格式字符串的开销,可能会更慢。另一方面,这*可能不重要!!!*所以这是一个很好的替代方案。 - Stephen C对于平台相关的换行符,我会使用:
String ls = System.getProperty("line.separator");
System.out.print(ls+ls+ls+ls+ls);
这应该可以在Windows、Linux或Mac上运行。
从答案中可以看出,这是一个偏好的问题。你提供的例子非常简单,性能提升和可读性问题都很小。然而,在一些更复杂的情况下,选择使用看似等效的方法可能会对你的代码造成严重影响,或者使它难以被邻居理解。
如果代码看起来有点混乱,请尝试将混乱的代码抽象出来,并给它一个易于阅读的方法名。
所以,是的,这是一个偏好的问题。
(编辑:不,显然这不是一个偏好的问题(^o^ )//)
第二个选项是更好的方法。
这不仅对程序员来说更容易,而且会减少函数开销。
以下程序的输出结果是什么?
System.out.println("\ /");
如果输出结果是 /,那么为什么它不是输出 \ / 呢?