StringBuffer:线程安全的可变字符序列
StringBuilder:线程不安全的可变字符序列
package API;
public class Buffer {
public static void main(String[] args) {
// String str = "哈";
// long m1 = System.currentTimeMillis(); //代码初始时的时间
// for (int i = 0; i < 10000; i++) { //循环加载一万次(创建一万个对象)
// str += "哈"; //在“哈”的字符后面追加“恰”
// }
// long m2 = System.currentTimeMillis(); //代码的字符追加后的时间
// System.err.println(m2-m1); //结束的时间减去初始的时间就是代码运行时的时间
StringBuffer str = new StringBuffer("恰"); //线程安全的可变字符序列(这种方法直接在“恰”后面增加“哈”,不会创建一万个对象,只会在恰后面增加一万个“哈”,所以这种线程比“String str = "恰";”要快)
long m1 = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
str.append("哈"); //这里也是在“恰”后面增加“哈”;(只不过“.append()”不适合“String str = "恰";)
}
long m2 = System.currentTimeMillis();
System.err.println(m2-m1);
StringBuilder str1 = new StringBuilder("恰"); //StringBuilder与StringButffer的差别不大,只是在运行时,因为考虑到线程安全(因为安全原因,所以StringBuffer会做出其他处理),所以StringBuilder会更快;
long n1 = System.currentTimeMillis();
for (int i = 0 ; i < 10000; i++) {
str1.append("哈");
}
long n2 = System.currentTimeMillis();
System.out.println(n2-n1);
}
}