StringBuffer
StringBuffer与StringBuilder的区别:StringBuffer是线程安全的,都有synchronized关键字修饰,StringBuilder是非线程安全的。
public class StringBufferDemo {
public static void main(String[] args) {
//String与StringBuffer,都可以处理字符串
//String在执行替换,修改等操作时候源字符串没有发生改变,想要改变除非赋值
//StringBuffer执行修改的时候,源串内容发生改变
//什么时间用??如果进行大量的增删改替换等操作就用StringBuffer,其他的就用String
//StringBuilder的使用和StringBuffer一样
String s1="123";
s1.replace("123", "abcd");
System.out.println(s1);//没有改变,不是abcd,123
StringBuffer stringBuffer=new StringBuffer("123");
stringBuffer.replace(0, 1, "abcd");
System.out.println(stringBuffer);//改变了,abcd23
//stringBuffer 有append,delete,insert,replace替换,reverse逆置
stringBuffer.delete(2, 4);//包括前,不包括后
System.out.println(stringBuffer);//ab23
//f1();
f2();
}
//StringBuffer
private static void f2() {
long startDate=System.currentTimeMillis();
String s="abcdefghijklmnopqrstuvwxyz0123456789";
Random random=new Random();
//String code="";
StringBuffer stringBuffer=new StringBuffer();
for(int i=1;i<=4;i++){
int n=random.nextInt(s.length() );
stringBuffer.append( s.charAt(n));
}
System.out.println();
long endDate=System.currentTimeMillis();
System.out.println("运行时间:"+ (endDate-startDate));//ms
}
//String
private static void f1() {
long startDate=System.currentTimeMillis();
String s="abcdefghijklmnopqrstuvwxyz0123456789";
Random random=new Random();
String code="";
for(int i=1;i<=10000;i++){
int n=random.nextInt(s.length() );
code=code+s.charAt(n);
}
System.out.println(code);
long endDate=System.currentTimeMillis();
System.out.println("运行时间:"+ (endDate-startDate));//ms
}
}