String为啥比StringBuild慢很多

2019-05-13  本文已影响0人  桌面小鱼

存储的时的区别.

先来看看各自都是如何存储的

String

image.png

StringBuilder

image.png

StringBuffer继承自AbstractStringBuilder,自身没有定义存储的容器,而是继承了其父类的容器[图片上传失败...(image-40fa51-1557732900598)]

这个就是StringBuilder存储字符的地方

从上面看出,String的字符是存储在一个被final修饰的char数组(类似于c中的指针常量)中的,而StringBuilder的字符是存储在一个普通的char数组中的


运算时的区别

String的运算

image.png

这两个相加的操作可以看作这样

final char c1[] = {'第','一','个','字','符','串'};
​final char c2[] = {'第','二','个','字','符','串'};
​final char c3[] = new char[12];
c3[] =  {'第','一','个','字','符','串','第','二','个','字','符','串'};
​c1 = c3;​
//这段只做理解复制代码

String在运算的时候都会创建一个大小合适的char数组[],所以当下次再拼接的时候都要进行重新分配.

StringBuilder的运算

image.png image.png

StringBuilder特征

大白话结论

建议

作者:清水I
链接:https://juejin.im/post/5cd8e76ae51d453b1f03adcb
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读