StringBuffer,StringBuilde
一、StringBuffer,StringBuilder 类
概述:这两个类都是用来优化字符串拼接效率的工具类
StringBuilder 和 StringBuffer 在修改时不会创建新对象.
- StringBuilder 可变字符序列,线程不安全
- String 的优化导致其必须是不可变的对象,然而这就要求字符串不能频繁的修改,否则性能非常差。
- 因此,Java提供了两个专门用于修改字符串的API :StringBuilder 和 StringBuffer
- 其内部维护了一个可变的char数组,修改性能好,开销小,并且提供了修改字符串内容的便捷操作。除了String本身的方法之外
- 还提供了增删改插等操作。
常用方法
-
默认无参构造创建时,内部会创建一个初始容量为16的char数组,但是由于数组中没有内容,所以相当于空字符串"";
-
调用有参构造创建时,会将给定的字符串内容追加(append(str))到StringBuilder对象中。容量将从原来的给的默认长度+str.length
特点:
StringBuilder 和 StringBuffer对字符串对象的操作会改变原字符串 -
1.追加操作:append(String str),将指定字符串拼接到StringBuilder 对象末尾
-
2.修改内容:replace(int start, int end, String str);第一个参数为要修改的起始下标,第二个参数为结束修改的下标,含头不含尾。第三个参数是替换(修改)成指定字符串。
-
3.删除内容:delete(int start,int end);含头不含尾
-
4.插入内容:insert(int offset,String str);
-
5.反转:reverse();
builder.reverse();因为StringBuilder 的操作方法返回的是当前对象。所以原字符串会改变。
StringBuffer和StringBuilder 是 可变字符序列
封装了char[] 数组
提供了一系列的对字符内容进行修改的方法
常用append来代替字符串做字符串连接
StringBuilder 为线程不安全的, 效率高
StringBuffer 为线程安全的 ,效率会低
System.currentTimeMillis();//记录系统时间,毫秒值,是个long 型
在执行效率上,StringBuilder 快于 StringBuffer 快于 String
所谓安全类似于电脑事件按顺序执行,但是不安全的话,就可能会抢占CPU,导致事件不按顺序执行。
public static void main(String[] args) {
StringBuilder str = new StringBuilder(“abc”);
int result = getResult(str);
System.out.println(result);
}
public static int getResult(StringBuilder str){
str.append(“abc”);
str.delete(0,3);
str.insert(0, “abc”);
str.replace(0,3, “abc”);
return str.length();
}
A.0
B.5
C.6
D.9