一、常用方法 以StringBuilder为例
1、append(String str) 添加
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//在源字符串后添加world
StringBuilder add = str.append("world");
System.out.println(add);//结果helloworld
2、insert(int offset, String str),例如insert(2,"吖吼"),在索引号2的位置插入字符串''吖吼''
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//在字符串索引值为2即第三个字符插入"吖吼"
StringBuilder ins = str.insert(2,"吖吼");
System.out.println(ins);//结果是he吖吼llo
3、delete(int start, int end),[开始位置,结束位置)-->前闭后开,要头不要尾
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//删除字符串索引值为2、3的字符
System.out.println(str.delete(1,3));//结果是hlo
4、deleteCharAt(int index)删除指定字符
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//删除字符串第二个字符
System.out.println(str.deleteCharAt(1));//结果是hllo
5、setCharAt(int index, char ch)指定字符修改
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//修改字符串第一个字符为'g'
str.setCharAt(0, 'g');//没有返回值
System.out.println(str);//结果是gello
6、charAt(int index)查询字符
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//查询索引号为0的字符
System.out.println(str.charAt(0));//结果为h
7、reverse()字符串反转
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//反转字符串
System.out.println(str.reverse());//结果为olleh
8、replace(int start, int end, String str)替换字串,替头不替尾
StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//替换前两个字符为666
System.out.println(str.replace(0,2,"666"));//替头不替尾,结果是666llo
起初计算机操作字符串,要求稳,StringBuffer支持多线程操作,这个字符串可能被好多个任务同时进行操作,例如A线程要改为“asd”B现成要改为“vbn”,会出现一些错乱问题,而StringBuffer牺牲了些性能,去协调多线程,保证线程安全,数据不丢失不发生错乱。如果不需要多线程,单线程下可以用StringBuilder,快一些
二、String 和 StringBuilder 性能比较
以字符串拼接所需时间为例,进行比较
String所需时间
public class StringXn {
public static void main(String[] args) {
String str ="";
long start = System.currentTimeMillis();//获取当前毫秒级时间
for(int i = 0;i<1000000;i++) {
str +="第"+i+"元素";//循环拼接字符串
}
long end = System.currentTimeMillis();//拼接结束时的时间
System.out.println("String需要的时间为"+(end-start)+"毫秒");//字符串拼接需要的时间
}
}
StringBuilder所需时间
public class StringBuilderXn {
public static void main(String[] args) {
StringBuilder str = new StringBuilder("");
long start = System.currentTimeMillis();
for(int i = 0;i<1000000;i++) {
str = str.append("第").append(i).append("元素");
}
long end = System.currentTimeMillis();
System.out.println("StringBuilder需要的时间为"+(end-start)+"毫秒");
}
}