联系:两者都适用于字符串的操作,都可以随便对字符串的内容进行变更操作,都继承至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)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
参数从左到右大概的意思是:第一个是要复制的数组,第二个是从要复制的数组的第几个开始,第三个是复制到哪,第四个是复制到的数组第几个开始,最后一个是复制长度
反正我是没理解啥意思,感觉挺有趣就贴出了了。