如果用String
来做循环+
拼接字符串时,每次循环都会创建新的字符串对象。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC
效率。
为了能高效拼接字符串,Java
标准库提供了StringBuilder
,它是一个长度可变对象,可以预分配缓冲区,这样,往StringBuilder
中新增字符时,不会创建新的临时对象:
StringBuilder sb = new StringBuilder(1024);
for (int i = 0; i < 1000; i++) {
sb.append(',');
sb.append(i);
}
String s = sb.toString();
StringBuilder
还可以进行链式操作,因为其内部定义的方法会返回this
,this
代表实例本身。这样,就可以不断调用自身的其他方法。
StringBuffer
是StringBuilder
的线程安全版本,效率没有StringBuilder
高,现在很少使用。
- StringBuilder方法
StringBuilder strB = new StringBuilder();
1、append(String str)/append(Char c)
//字符串连接
strB.append("ch")
2、toString()
//返回一个与构建起或缓冲器内容相同的字符串
strB.toString()
3、appendcodePoint(int cp)
//追加一个代码点,并将其转换为一个或两个代码单元并返回this
strB.appendCodePoint(2)
4、setCharAt(int i, char c)
//将第 i 个代码单元设置为 c(可以理解为替换)
strB.setCharAt(2, 'd');
5、insert(int offset, String str)/insert(int offset, Char c)
//在指定位置之前插入字符(串)
strB.insert(2, "LS")
6、delete(int startIndex,int endIndex)
//删除起始位置(含)到结尾位置(不含)之间的字符串
strB.delete(2, 4)
网友评论