1.StringBuffer类
StringBuffer是线程安全的,可变的字符序列。
StringBuffer类的常用方法
方法 | 功能 |
---|---|
append(String str) | 将指定的字符串附加到此字符序列。 |
charAt(int index) | 返回 char在指定索引在这个序列值。 |
delete(int start, int end) | 删除此序列的子字符串中的字符。 |
deleteCharAt(int index) | 删除 char在这个序列中的指定位置。 |
indexOf(String str) | 返回指定子字符串第一次出现的字符串内的索引。 |
insert(int offset, String str) | 在此序列中插入 boolean参数的字符串表示形式。 |
lastIndexOf(String str) | 返回指定子字符串最右边出现的字符串内的索引。 |
length() | 返回长度(字符数)。 |
replace(int start, int end, String str) | 用指定的String中的字符替换此序列的子字符串中的 String 。 |
setCharAt(int index, char ch) | 指定索引处的字符设置为 ch 。 |
subSequence(int start, int end) | 返回一个新的字符序列,该序列是该序列的子序列。 |
toString() | 返回表示此顺序中的数据的字符串。 |
substring(int start) | 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。 |
public class Demo6 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//将指定的字符串附加到此字符序列
sb.append("张三");
sb.append("李四");
//返回char在指定索引在这个序列值
System.out.println(sb.charAt(0));//张
//删除此序列的字符串中的字符,去头不去尾
sb.delete(0, 2);
System.out.println(sb);//李四
//删除char在这个序列中的指定位置
sb.deleteCharAt(1);
System.out.println(sb);//李
//用指定的字符替换此序列的的子字符串
sb.replace(0, 1, "王二麻子");
System.out.println(sb);//王二麻子
System.out.println(sb.indexOf("王二"));
//在此序列中插入boolean参数的字符串形式
sb.insert(1, "关羽");
System.out.println(sb);
//返回一个新的字符序列,该序列是该序列的子序列
sb.subSequence(1,2);
System.out.println(sb);
}
}
面试题:String和Stringbuffer和StringBuilder区别
1.String为固定长度的字符串,StringBuilder和StringBuffer为变长字符串; 2.stringBuffer是线程安全的,StringBuilder是非线程安全的; 3.StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销
代码实现:
public class Demo2 {
public static void main(String[] args) {
String(10000);
StringBuffer(10000);
StringBuilder(10000);
}
//String耗时
public static void String(int n){
String str = "";
long startString = System.currentTimeMillis();
for (int i = 0; i < n; i++) {
str += i;
}