- StringBuffer:可变长字符串,运行效率慢,线程安全
- StringBuilder : 可边长字符串、运行快、线程不安全
- 运行效率:StringBuilder>StringBuffer>String
package com.Class.StringClass;
public class Test {
public static void main(String[] args) {
//开始时间
long start = System.currentTimeMillis();
/*
String str = "";
for (int i = 0; i < 99999; i++) {
str += i;
}
System.out.println(str);
*/
StringBuilder s = new StringBuilder();
// StringBuffer s = new StringBuffer();
for (int i = 0; i < 99999; i++) {
s.append(i);
}
System.out.println(s.toString());
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));//String用时39599 StringBuilder用时39 StringBuffer用时51
}
}
- StringBuffer和StringBuilder的一些常用的方法
package com.Class.StringClass;
public class stringBuffer {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//StringBuilder sb = new StringBuilder();与StringBuffer的用法一样
//1.append();追加
sb.append("java is the best language");
System.out.println(sb.toString());
sb.append(",java is so good");
System.out.println(sb.toString());
//2.insert();添加
sb.insert(0,"haha");
System.out.println(sb.toString());
//3.replace();替换
sb.replace(0,4,"hello,");//0< Str <=4 前开后闭
System.out.println(sb.toString());
//4.delete();删除
sb.delete(0,sb.length()-1);
System.out.println(sb.length());
}
}
输出结果:
- 线程安全:StringBuffer是线程安全的,因为StringBuffer中有很多方法带有synchronized方法。StringBuilder是不安全的.
- 总结
- String:适用与少量的字符串操作的情况
- StringBuffer:适用于多线程下在字符串缓冲区进行大量操作的情况
- StringBuilder:适用于单线程下在字符串缓冲区进行大量操作的情况