StringBuffer就是字符串缓冲区,用于存储数据的容器,初始被容量16个字符。
1、特点
(1)、长度是可变的
(2)、可以存储不同类型的数据
(3)、最终转成字符串进行使用
(4)、可以对字符串进行插入修改
2、方法
(1)、添加 返回StringBuffer类型的对象
StringBuffer append(data)
StringBuffer sb = new StringBuffer();
sb.append(4);
sb.append(true);
sb.insert(1, false);
System.out.println(sb); //4falsetrue输出字符串
(2)、指定位置插入
insert(index, data)
(3)、删除 返回StringBuffer类型的对象
StringBuffer delete(start, end),包含头,不包含尾
StringBuffer deleteCharAt(int index),删除指定位置元素
StringBuffer sb = new StringBuffer("abce");
sb.delete(1, 3);
System.out.println(sb);//ae
(4)、查找
char charAt(index);
int indexOf(stirng);
int lastIndexOf(string);
(5)、修改
StringBuffer replace(int start, int end, string str)
void setCharAt(index, char);
sb.replace(1,3,"nba");//anbae
sb.setCharAt(2, '1');//abqe
3、StringBuilder类
jdk1.5以后出现了功能和StringBuffer一样的对象。就是StringBuilder。
不同的是:
StringBuffer是线程同步的,通常用于多线程。
StringBuilder是线程不同步的,通常用于单线程,提高效率。
public class StringBuilderTest {
public static void main(String[] args) {
int[] arr = {3,1,5,1,2};
String s = arrayToString(arr);
System.out.println(s);
}
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i= 0; i<arr.length; i++) {
if(i!=arr.length - 1)
sb.append(arr[i]+", ");
else
sb.append("]");
}
return sb.toString();
}
public static String arrayToString2(int[] arr) {
String str = "[";
for(int i=0; i<arr.length; i++) {
if(i!=arr.length - 1)
str+=arr[i]+", ";
else
str+=arr[i]+"]";
}
return str;
}
}
字符串拼接的方式会在字符串常量池中生成多个字符串。因此,推荐用缓冲区容器的方式。