StringBuffer与StringBuilder的简单理解

联系:两者都适用于字符串的操作,都可以随便对字符串的内容进行变更操作,都继承至AbstractStringBuilder。

区别:StringBuffer是线程安全的,方法都加了synchronized修饰,而StringBuilder则没有,所以StringBuilder是线程不安全的。

关于初始化:

两者初始化大小都一样,在构造时都是通过父类AbstractStringBuilder的构造函数初始一个长度为16的字符集数组,而后每次append时都会判断这个数组长度是否足够,否则通过

这个算法扩增,大概是扩增至原来的1.6倍左右。

然而delete(int start,int end)这个方法就比较有趣了,通过查看源码

发现它是通过System.arrayopy这个方法完成的,这个方法的官方解释是:

arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

参数从左到右大概的意思是:第一个是要复制的数组,第二个是从要复制的数组的第几个开始,第三个是复制到哪,第四个是复制到的数组第几个开始,最后一个是复制长度

 反正我是没理解啥意思,感觉挺有趣就贴出了了。

posted @ 2016-12-27 17:32  钓的不是鱼  阅读(150)  评论(0编辑  收藏  举报