写这篇文章的目的是为了给大家分享一个我刚工作时的真实事情。文章的标题也是当时的项目组长对我的问话:"你拼接字符串的方式真的对吗?"当时听到组长这样问时我还愣了一下,默默的看了看自己写的代码。并没有发现有什么特别大的问题,但是介于当时我还是在新手村打怪的身份,也不敢肯定自己写的就是对的。后来事实证明我写的代码确实存在着性能问题。最近排查项目中的BUG时无意翻到了之前写的代码,从而想起了这件事情,所以才有了这篇文章。也是想把这个问题告诉大家,让一些新手少踩坑。
正文
先把有问题的代码展示出来让大家瞅瞅,看看各位能不能发现其中的问题。
public static void main(String[] args) {
String result = "";
for (int i = 0; i < 10000; i++) {
result += "菜鸟";
}
System.out.println(result);
}
有发现什么问题吗?
其实问题就出现在使用+=拼接字符串上了,当循环次数过大,并且需要拼接的字符串过长时,使用上述方法进行拼接,效率会明显下降。当然解决方案其实也特别简单,我们只需要使用StringBuilder的append方法进行字符串的拼接就会大大提高效率。
优化之后的代码如下:
public static void main(String[] args) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < 10000; i++) {
result.append("菜鸟");
}
System.out.println(result.toString());
}
为了让大家更加直观的看到两种拼接字符串方式,在效率上的差别。我将上述两段代码进行了执行时间的统计。具体是如何统计代码执行时间的,我就不在此展示了,想必大家应该也都会。如果有不太明白的,可以在评论区问我,或者翻看我之前的文章,查找相关的例子。直接看结果吧。
本文暂时没有评论,来添加一个吧(●'◡'●)