String的“+”操作分析

起源

昨天,我和队友讨论字符串拼接问题时,他提到了这个问题:直接“+”操作好像是生成了临时的一个新String,然后拼接,再复制给原来的String。带着这个问题,我查了下,得出以下的结论。

结论

我查到的信息之一这样说:因为“+”拼接字符串,每拼接一次都是再内存重新开辟一个新的内存区域(堆里边),然后把得到的新的字符串存在这块内存,字符串如果很大,循环次多又多,那么浪费了很多时间和空间的开销。 我查到的信息之二这么说:当拼接次数较少时,其实编译器会将其优化为StringBuilder类型,只是当拼接次数特别多时,编译器优化时将会产生过多的StringBuilder类型,从而导致空间浪费。

策略

当拼接次数较少时,我们可以直接使用“+”操作,而当拼接数量较大时,我们最好使用StringBuilder类型。

操作

1
2
3
StringBuilder SB = new StringBuilder();
SB.append(……);
String Result = SB.toString();



本文链接: http://home.meng.uno/articles/fc57b387/ 欢迎转载!

© 2018.02.08 - 2020.06.02 Mengmeng Kuang  保留所有权利!

UV : | PV :

:D 获取中...

Creative Commons License