使用StringBuffer的时候,经常对他的delete方法的参数的起止位置搞混,(下面是API中的解释)
public StringBuffer replace(int start,
int end,
String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,如果不存在这种字符,则一直到序列尾部。先将子字符串中的字符移除,然后将指定的 String 插入 start。(如果需要,序列将延长以适应指定的字符串。)
参数:
start - 起始索引(包含)。
end - 结束索引(不包含)。
str - 将替换原有内容的字符串。
原来end 的结束索引并不包含他,类似的像substring()方法也不包含结束索引,这可能是java的一个特点吧
另外还注意到了StringBuffer 跟StringBuilder,这两个类具有兼容的 API(估计就是说提供的API是一样的),这两个类的区别就是,线程同步不同步的问题
StringBuffer是线程同步的,所以速度较慢,StringBuilder是线程不同步的,所以速度较快,当没有同步问题时,建议使用StringBuilder