1.同异
(1)相同:
是内容可改的字符序列,两者提供的API是兼容的。
注:
API:预先在类中定义好的函数,即该类提供的方法的集合。
(2)差别:
StringBuffer:运用synchronized修饰,线程安全,支持并发操作,适合在多线程中使用。
StringBulider:Java5中提出,线程不安全,即不能线程同步,但具有速度优势。
2.创建对象
//StringBuffer对象
StringBuffer sb = new StringBuffer();
//StringBulider对象
StringBulide sb = new StringBulide();
2.常用方法
//在sb所含字符串后追加写入str
sb.append(String str);
//将字符串反转
sb.reverse();
//移除该序列的子串,即[start, end),索引从0开始
sb.delete(int start, int end);
//如delete(5,8),即str[5]~str[7]
//将字符串str插入索引n的位置,是插入,非覆盖
sb.insert(int n, String str);
//用字符串str代替原串中序列[start, end)的位置的子串,索引从0开始
sb.replace(int start, int end, String str);
/**例子
String str = "0123456789"; //长度为10
String str_re = "wcc";
String str_new = str.replace(1, 8, str_re); //str_new = "0wcc89"
*/
3.成员函数
函数 | 功能 |
int capacity() | 返回当前字符串构造器容量 |
int length() | 返回字符序列长度 |
char charAt( int index) | 返回索引位置上的字符 |
int indexOf( String str) | 返回子串str在主串中第一次出现时,主串首字符的索引 |
int indexOf( String str, int start) | 从指定位置开始,返回子串str在主串中第一次出现时,主串首字符的索引 |
void setCharAt( int index, char ch) | 将指定索引位置的字符换成字符ch |
void setLength( int newLength) | 设置字符序列的长度(非构造器容量) ①当newLength < 旧长度,则成功修改字符序列长度; ②当newLength >= 旧长度,则在旧字符序列末尾补上对应数量的空字符,再修改字符序列长度; ③当newLength < 0,则报错; |
注:
构造器的初始化容量为16,当实例长度>16,容量会自动变为(旧值+1)*2;