目录
源码分析
String是不可变的字符序列,底层使用char[]存储
StringBuilder和StringBuffer是可变的字符序列
StringBuffer线程安全,效率低,适合多线程。底层使用char[]存储
StringBuffer线程不安全,效率高,适合非多线程。底层使用char[]存储
StringBuffer源码解析——扩容
下面的判空是避免空指针异常
指导意义:使用StringBuffer时候直接指定数组容量避免扩容降低效率
常用方法
StringBuffer类
要记住以下关于区间操作是左闭右开的
StringBuilder类
参照StringBuffer类方法
三种时间对比
public class Demo {
public static void main(String[] args) {
test();
}
public static void test(){
//初始设置
long startTime = 0L;
long endTime = 0L;
String text = "";
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
//对比
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
buffer.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer执行时间"+(endTime-startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder执行时间"+(endTime-startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
text = text + i;
}
endTime = System.currentTimeMillis();
System.out.println("String执行时间"+(endTime-startTime));
}
}