2014-12-07 44 views
2

这些代码块之间有什么区别 - 性能或内存或其他方面有什么区别?格式化字符串和简单字符串之间的区别

,第一码:

String name = "Jack"; 
String familyName = "Hunter"; 

String result = String.format("Your name is %s %s",name, familyName); 

和第二代码:

String name = "Jack"; 
String familyName = "Hunter"; 

String result = "Your name is " + name + " " + familyName; 

感谢您的关注;-)

+0

这里有一些结果:[如果性能很重要,我应该使用Java的String.format()吗?](http://stackoverflow.com/questions/513600/should-i-use-javas-string-format-如果性能是重要的) – Obicere 2014-12-07 07:40:06

回答

2

有一个在它产生的输出方面没有差别。在每种情况下,result变量将具有相同的内容。

String.format()在那里,所以你可以做更强大的格式,包括指定浮点数的小数位数等。

我预计String.format()版本会相对较慢,因为它的功能更强大,并且必须在执行与第二版本基本相同的操作之前检查格式字符串的内容。换句话说,它需要花一些时间来研究你想要做什么,而在第二个版本中,编译器可以自己完成。

但是,实际上,出于性能方面的考虑,选择其中一个片段作为其他优化片段看起来就像是几乎永远不会有回报的微型优化。除非你有明确的性能需求(例如,这对性能至关重要的紧密循环运行),你应该选择一个更具可读性的。

+0

公平地说,第二个代码的性能应该快很多。第二个代码将被改为使用'StringBuilder',所以性能是相同的。 – Obicere 2014-12-07 07:45:10

+0

@Obicere你的意思是说编译器会在内部使用'StringBuilder'来连接一串串'String's吗?这似乎是一个明显的优化,虽然我不知道编译器做到了。 – 2014-12-07 07:46:48

+0

是的!这只是Java编译器的一大优点。 – Obicere 2014-12-07 07:48:36

相关问题